MysqL 列子查询及 IN、ANY、SOME 和 ALL 操作符的使用MysqL 列子查询

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

一个列子查询的例子如下:

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

列子查询中使用 IN、ANY、SOME 和 ALL 操作符

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

IN:在指定项内,同 IN(项1,项2,…)。

ANY:与比较操作符联合使用,表示与子查询返回的任何值比较为 TRUE ,则返回 TRUE 。

SOME:ANY 的别名,较少使用。

ALL:与比较操作符联合使用,表示与子查询返回的所有值比较都为 TRUE ,则返回 TRUE 。

下面是原始数据表:

table1:

s1

2

10

table2:

s2

5

12

20

ANY 操作符

ANY 关键字必须接在一个比较操作符的后面,表示与子查询返回的任何值比较为 TRUE ,则返回 TRUE 。一个 ANY 例子如下:

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

查询返回结果如下所示:

s1

10

在子查询中,返回的是 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:

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

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

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

一个行子查询的例子如下:

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 表:

blog 表:

sql 如下:

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

查询返回结果如下所示:

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

总结

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

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。

如您喜欢交流学习经验,点击链接加入交流1群:1065694478(已满)交流2群:163560250

mysql子查询教行子查询_MySQL中列子查询与行子查询操作的学习教程相关推荐

  1. mysql多表查询连接的种类_MySQL中基本的多表连接查询教程

    一.多表连接类型1. 笛卡尔积(交叉连接) 在MySQL中可以为CROSS JOIN或者省略CROSS即JOIN,或者使用','  如: 由于其返回的结果为被连接的两个数据表的乘积,因此当有WHERE ...

  2. mysql 中间表的好处_Mysql中使用中间表提高统计查询速度

    对于数据量较大的表,在其上进行统计查询通常会效率很低,并且还要考虑统计查询是否会对在线的应用产生负面影响.通常在这种情况下,使用中间表可以提高统计查询的效率, 下面通过对session 表的统计来介绍 ...

  3. mysql查询id为偶数_MySQL中查询中位数?

    导读:计算中位数可能是小学的内容,然而在数据库查询中实现却并不是一件容易的事.我们今天就来看看都有哪些方法可以实现. 注:本文所用MySQL版本无限制,所列题目均来源于LeetCode. LeetCo ...

  4. mysql查找有小数点的数据_MySQL中查询中位数?

    导读:计算中位数可能是小学的内容,然而在数据库查询中实现却并不是一件容易的事.我们今天就来看看都有哪些方法可以实现. 注:本文所用MySQL版本无限制,所列题目均来源于LeetCode. LeetCo ...

  5. mysql 怎么查询慢sql语句_Mysql中 查询慢的 Sql语句的记录查找

    Mysql中 查询慢的 Sql语句的记录查找 慢查询日志 slow_query_log,是用来记录查询比较慢的sql语句,通过查询日志来查找哪条sql语句比较慢,这样可以对比较慢的sql可以进行优化. ...

  6. mysql查询成绩最好的十个学生_mysql中一张学生表,查询出单科成绩前十名学生的所有信息 和总分成绩前十名学生的所有信息 在线等...

    匿名用户 1级 2012-03-19 回答 学生表名为:student, 单科成绩的字段为:subject.学生名字为:name 查询单科成绩前十:mysql语句为:select * from stu ...

  7. mysql查询男生基本情况_MySQL数据库技术与应用:数据查询

    **摘要:**数据查询是数据库系统应用的主要内容,也是用户对数据库最频繁.最常见的基本操作请求. 数据查询 数据查询是数据库系统应用的主要内容,也是用户对数据库最频繁.最常见的基本操作请求.数据查询可 ...

  8. mysql中如何取消1000行的查询限制?

    在使用数据库时,常常会有需要使用select语句查询表的情况.当使用select * 进行查询时,mysql中默认查询表的前1000行,也就是说如果表中的数据库超过了1000行,查询结果就会显示不完整 ...

  9. mysql的视图的名词解释_MySql中的视图的概念及应用

    视图的基本概念 视图是从一个或几个基本表(或者视图)导出的表.它与基本表不同,是一个虚表. 数据库只存放视图的定义,而不存放视图对应的数据,这些数据仍存放在原来的基本表中.所以基本表中的数据发生变化, ...

最新文章

  1. 该不该放弃嵌入式,单片机这条路?
  2. 福利来了!国内TOP3的超级云计算,免费领2000核时计算资源!
  3. 在线python视频教程_【好程序员】2019 Python全套视频教程2
  4. Kafka 监控 Kafka Eagle 精简版本
  5. CSS单位之战:EM与。 REMs ...打架! ?
  6. uploadify没反应
  7. python写一个数据库的界面_Python GUI教程(十四):在PyQt5中使用数据库
  8. 剑指Offer之左旋字符串
  9. 堡垒机应用发布服务器是干嘛的_支持Web UI数据库审计和敏感数据国密算法加密,JumpServer堡垒机v2.5.0发布丨Release Notes...
  10. asp 后台批量管理程序
  11. MongoDB 3.2+ 安全授权登录访问控制
  12. 使用mysql 函数 IFNULL 解决某些字段为null
  13. eclipse下载安装
  14. Excel 对比两列数据大小 大于等于 高亮显示
  15. oracle9i命令(一):手工创建数据库
  16. 如何透过表象直达本质
  17. Python基础:什么是字符串?字符串是用来做什么的?
  18. Unity-Photon Pun2个人总结
  19. 用户运营的核心是消费者心理分析
  20. 日语输入法时的部分实用快捷键

热门文章

  1. C#打印控件的使用实例
  2. 4月3日 尤金.卡巴斯基在北大精彩演讲
  3. numpy中reshape方法详解
  4. VLC通信仿真中数字脉冲间隔调制(DPIM)实例
  5. 程序员锁死服务器致公司倒闭当事人逐条反驳:这锅我不背
  6. VC++下命名管道编程的原理及实现
  7. 神经风格迁移(Neural Style Transfer)程序实现(Caffe)
  8. 6kyu Build a pile of Cubes
  9. nodejs全局变量第一次没赋值要第二次才有是为什么_【NodeJS】async 和 await 的本质...
  10. ubuntu 14.04 samba 的 配置