Mysql入门MySQL中列子查询与行子查询 *** 作的学习教程

Mysql入门MySQL中列子查询与行子查询 *** 作的学习教程,第1张

概述介绍《Mysql入门MySQL中列子查询与行子查询 *** 作的学习教程》开发教程,希望对您有用。

《MysqL入门MysqL中列子查询与行子查询 *** 作的学习教程》要点:
本文介绍了MysqL入门MysqL中列子查询与行子查询 *** 作的学习教程,希望对您有用。如果有疑问,可以联系我们。

MysqL 列子查询及 IN、ANY、SOME 和 ALL *** 作符的使用
MysqL 列子查询
列子查询是指子查询返回的结果集是 N 行一列,该结果通常来自对表的某个字段查询返回.
一个列子查询的例子如下:
MysqL必读

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

列子查询中使用 IN、ANY、SOME 和 ALL *** 作符MysqL必读

由于列子查询返回的结果集是 N 行一列,因此不能直接使用 = > < >= <= <> 这些比较标量结果的 *** 作符.在列子查询中可以使用 IN、ANY、SOME 和 ALL *** 作符:MysqL必读

IN:在指定项内,同 IN(项1,项2,…). ANY:与比较 *** 作符联合使用,表示与子查询返回的任何值比较为 TRUE,则返回 TRUE . SOME:ANY 的别名,较少使用. ALL:与比较 *** 作符联合使用,表示与子查询返回的所有值比较都为 TRUE,则返回 TRUE .

下面是原始数据表:MysqL必读

table1:
MysqL必读

s1210

table2:
MysqL必读

s251220

ANY *** 作符
ANY 关键字必须接在一个比较 *** 作符的后面,则返回 TRUE .一个 ANY 例子如下:
SELECT s1 FROM table1 WHERE s1 > ANY (SELECT s2 FROM table2)
查询返回结果如下所示:
MysqL必读

s110

在子查询中,返回的是 table2 的所有 s2 列结果(5,12,20),然后将 table1 中的 s1 的值与之进行比较,只要大于 s2 的任何值即表示为 TRUE,符合查询条件.
IN 是 = ANY 的别名,二者相同,但 NOT IN 的别名却不是 <> ANY 而是 <> SOME.
特殊情况
如果 table2 为空表,则 ANY 后的结果为 FALSE;
如果子查询返回如 (NulL,NulL,NulL) 列为空的结果,则 ANY 后的结果为 UNKNowN .
ALL *** 作符
ALL 关键字必须接在一个比较 *** 作符的后面,表示与子查询返回的所有值比较为 TRUE,则返回 TRUE .一个 ALL 例子如下:
SELECT s1 FROM table1 WHERE s1 > ALL (SELECT s2 FROM table2)
该查询不会返回任何结果,因为 s1 中没有比 s2 所有值都大的值.
当然在该例子查询中,返回了 s2 的所有值,您可以在该子查询中添加任何条件以限制返回的查询结果而无需全部返回.
NOT IN 是 <> ALL 的别名,二者相同.
特殊情况
如果 table2 为空表,则 ALL 后的结果为 TRUE;
如果子查询返回如 (0,1) 这种尽管 s1 比返回结果都大,但有空行的结果,则 ALL 后的结果为 UNKNowN .
注意:对于 table2 空表的情况,下面的语句均返回 NulL:
MysqL必读

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

MysqL 行子查询
行子查询是指子查询返回的结果集是一行 N 列,该子查询的结果通常是对表的某行数据进行查询而返回的结果集.
一个行子查询的例子如下:
MysqL必读

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

在该例子中,在保证子查询返回单一行数据的前提下,如果 column1=1 且 column2=2,则该查询结果为 TRUE.
MysqL 行构造符
在上面的例子中,WHERE 后面的 (1,2) 被称为行构造符,也可以写作 ROW(1,2).行构造符通常用于与对能返回两个或两个以上列的子查询进行比较.
MysqL 行子查询实例
下面是用于例子的两张原始数据表:
article 表:
MysqL必读

MysqL必读

blog 表:
MysqL必读

MysqL必读

sql 如下:
MysqL必读

SELECT * FROM article WHERE (Title,content,uID) = (SELECT Title,uID FROM blog WHERE bID=2)

查询返回结果如下所示:
MysqL必读

MysqL必读

在该行子查询例子中,将 article 表 Title,uID 字段逐一与子查询返回的行记录作比较,如果相等则列出这些相等的记录(理论上可能不止一条).
MysqL必读

总结

以上是内存溢出为你收集整理的Mysql入门MySQL中列子查询与行子查询 *** 作的学习教程全部内容,希望文章能够帮你解决Mysql入门MySQL中列子查询与行子查询 *** 作的学习教程所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/1163426.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-01
下一篇 2022-06-01

发表评论

登录后才能评论

评论列表(0条)

保存