Php-mysql中的子查询(V客学院知识分享)

来源:互联网 发布:西方伦理思想史淘宝 编辑:程序博客网 时间:2024/05/21 06:43


第一:子查询的定义

 

     概念: 子查询允许把一个查询嵌套在另一个查询当中。

 

第二:子查询的分类    

 

    A.标量子查询:

 

   是指子查询返回的是单一值的标量,如一个数字或一个字符串,也是子查询中最简单的返回形式。可以使用 = > < >= <= <> 这些操作符对子

 

查询的标量结果进行比较,通常子查询的位置在比较式的右侧

     示例:

 

SELECT * FROM article WHERE uid = (SELECT uid FROM user WHERE status=1 ORDER BY uid DESC LIMIT 1)

 

SELECT * FROM t1 WHERE column1 = (SELECT MAX(column2) FROM t2)

 

SELECT * FROM article AS t WHERE 2 = (SELECT COUNT(*) FROM article WHERE article.uid = t.uid)

 

 

    B.列子查询

 

 

  指子查询返回的结果集是 N行一列,该结果通常来自对表的某个字段查询返回。

     可以使用 = > < >= <= <>这些操作符对子查询的标量结果进行比较,通常子查询的位置在比较式的右侧

     可以使用 INANYSOMEALL操作符,不能直接使用 = > < >= <= <>这些比较标量结果的操作符。

     示例:

 

SELECT * FROM article WHERE uid IN(SELECT uid FROM user WHERE status=1)

 

SELECT s1 FROM table1 WHERE s1 > ANY (SELECT s2 FROM table2)

 

SELECT s1 FROM table1 WHERE s1 > ALL (SELECT s2 FROM table2)  

 

 

 

    NOT IN<> ALL 的别名,二者相同。

     特殊情况

       如果 table2为空表,则 ALL 后的结果为 TRUE

       如果子查询返回如 (0,NULL,1)这种尽管 s1 比返回结果都大,但有空行的结果,则 ALL后的结果为 UNKNOWN

     注意:对于 table2空表的情况,下面的语句均返回 NULL

 

 

SELECT s1 FROM table1 WHERE s1 > (SELECT s2 FROM table2)

 

SELECT s1 FROM table1 WHERE s1 > ALL (SELECT MAX(s1) FROM table2)

 

  C.行子查询

 

    指子查询返回的结果集是一行 N列,该子查询的结果通常是对表的某行数据进行查询而返回的结果集。

     例子:

 

 

SELECT * FROM table1 WHERE (1,2) = (SELECT column1, column2 FROM table2)

 

SELECT * FROM product WHERE(BigClass_ID,SmallClass_ID)=(SELECT BigClass_ID,SmallClass_ID from smallclass WHERE SmallClass_ID=356);

 

注:(1,2)等同于 row(1,2)

 

SELECT * FROM article WHERE (title,content,uid) = (SELECT title,content,uid FROM blog WHERE bid=2)

 

 

D.表子查询

 

  指子查询返回的结果集是 NN 列的一个表数据。

     例子:

 

SELECT * FROM article WHERE (title,content,uid) IN (SELECT title,content,uid FROM blog)

 

SELECT * FROM product WHERE (BigClass_ID,SmallClass_ID) IN(SELECT BigClass_ID,SmallClass_ID from smallclass);

 

 

第三:子查询的总结

 

      子查询对数据的查找带来很多方便,从上面的分类种类一层一层往下了解。PHP开发、web前端、UI设计、VR开发专业培训机构-vIT学院版权所有,转载请注明出处,谢谢合作!)

阅读全文
0 0
原创粉丝点击