当子查询要返回多个行来与外层查询进行比较运算时,可以使用运算符 IN 和 NOT IN。它们会测试某个给定的比较值是否存在于某一组值里。如果外层查询里的行与子查询返回的某一个行相匹配,那么 IN 的结果为真。如果外层查询里的行与子查询返回的所有行都不匹配,那么 NOT IN 的结果为真。

1. 下面两条语句分别使用 IN 和 NOT IN 来查找那些在 absence 表里有缺勤记录的学生和没有缺勤记录的学生:

mysql> SELECT * FROM student WHERE student_id IN (SELECT student_id FROM absence);
Empty set (0.05 sec)

没有结果,说明全部学生都是满勤,可以用下面的语句来验证:

mysql> SELECT * FROM student WHERE student_id NOT IN (SELECT student_id FROM absence);
+--------+-----+------------+
| name | sex | student_id |
+--------+-----+------------+
| Jim | M | 1 |
| Tom | M | 2 |
| Travis | M | 5 |
| Steve | M | 6 |
| Hellen | M | 7 |
| Julian | M | 8 |
| Lily | F | 9 |
+--------+-----+------------+

2. IN 和 NOT IN 还可以用于返回多个列的子查询。也就是说,可以把它们与表的子查询一起使用。此时,需要使用一个行构造器来指定与各列进行测试的比较值。

mysql> SELECT last_name, first_name,city,state FROM president
-> WHERE (city,state) IN
-> (SELECT city,state FROM president
-> WHERE last_name = 'Roosevelt');

这条查询的意思是找出 president 表里与 ‘Roosevelt’ 是同乡的那些人。

最新文章

  1. 通过Mono 在 Heroku 上运行 .NET 应用
  2. linux下vmware的安装、物理分区使用及卸载
  3. 反序列化问题的研究之java篇
  4. Scribe日志收集工具
  5. PHP入门 - - 05-->编写HTML页面的常用标签
  6. spring mvc定时任务的简单使用
  7. 非常简单实用的Python HTTP服务
  8. 移位操作<<和>>,是逻辑数字上的移动(和大端小端无关)
  9. Redis系列(二)—— 数据类型及其使用
  10. Individual Project - Word frequency program-11061171-MaoYu
  11. PHP中设置、使用、删除Cookie方法
  12. 一、webpack那点事-安装、环境搭建
  13. git分支的使用
  14. SpriteBuilder中本地化的局限性
  15. codeforces 1037
  16. 分布式开放消息系统RocketMQ的原理与实践(消息的顺序问题、重复问题、可靠消息/事务消息)
  17. virtualbox+vagrant学习-2(command cli)-8-vagrant Package命令
  18. pandas:对字符串类型做差分比较
  19. pktgen-dpdk 实战
  20. js字母大小写字母转换

热门文章

  1. [Alpha]Scrum Meeting#9
  2. appium获取toast方法
  3. 安装nagios出现的错误
  4. Docker实战:更轻松、更愉快、更高效
  5. ASP.NET MVC利用ActionLink实现动态组合查询
  6. python安装及配置
  7. Windows Git Bash命令行下创建git仓库并更新到github
  8. Spring由于web配置导致的spring配置文件找不到的问题的解决方案
  9. 创建自己的加密货币MNC——以太坊代币(二)
  10. Softwaretechnik