mysql in和not in子查询实例讲解
时间:2016-08-26
mysql in后面跟的是记录集,用于查询在改记录集中的数据,not in与in刚好相反,表示查询不在记录集中的数据,本文章向大家介绍mysql in和not in条件查询的使用实例,需要的朋友可以参考一下。
首先有这样三张表:books表、authors表和authorbook
book表:
BookID | BookTitle | Copyright |
12786 | Java | 1934 |
13331 | MySQL | 1919 |
14356 | PHP | 1966 |
15729 | PERL | 1932 |
16284 | Oracle | 1996 |
17695 | Pl/SQL | 1980 |
19264 | JavaScript | 1992 |
19354 | www.java2s.com | 1993 |
authors表
AuthID | AuthFN | AuthMN | AuthLN |
1006 | H | S. | T |
1007 | J | C | O |
1008 | B | E | |
1009 | R | M | R |
1010 | J | K | T |
1011 | J | G. | N |
1012 | A | P | |
1013 | A | W | |
1014 | N | A |
authorbook表
AuthID | BookID |
1009 | 12786 |
1006 | 14356 |
1008 | 15729 |
1011 | 15729 |
1014 | 16284 |
1010 | 17695 |
1012 | 19264 |
1012 | 19354 |
现在我们开始in和not in子查询实例
1.获取book表中bookid为12786或14356或17695或19354的数据:
select *from book where bookid in(12786,14356,17695,19354)
结果为:
BookID | BookTitle | Copyright |
12786 | Java | 1934 |
14356 | PHP | 1966 |
17695 | Pl/SQL | 1980 |
19354 | www.java2s.com | 1993 |
这是一个非常简单的mysql in实例,上面的SQL语句其实也可以用or代替:
select *from book where bookid=12786 or bookid=14356 or bookid=17695 or bookid=19354
2.获取book表中bookid字段的值在authorbook表中存在的书本信息:
select *from book where bookid in(select distinct BookID from authorbook)
结果为:
BookID | BookTitle | Copyright |
12786 | Java | 1934 |
14356 | PHP | 1966 |
15729 | PERL | 1932 |
16284 | Oracle | 1996 |
17695 | Pl/SQL | 1980 |
19264 | JavaScript | 1992 |
19354 | www.java2s.com | 1993 |
因为bookid为13331的书本不在authorbook表中,所以该书本信息不在查询结果集中。
3.获取book表中bookid字段的值不在authorbook表中的书本信息:
select *from book where bookid not in(select distinct BookID from authorbook)
结果为:
BookID | BookTitle | Copyright |
13331 | MySQL | 1919 |
4.再来一个复杂一点的:
SELECT BookTitle, Copyright
FROM Books
WHERE Copyright NOT IN
(
SELECT b.copyright
FROM Books AS b JOIN AuthorBook AS ab USING (BookID)
JOIN Authors AS a USING (AuthID)
WHERE AuthLN='MySQL'
)
ORDER BY BookTitle
/* http://www.manongjc.com/article/1404.html */
运行结果:
BookID | BookTitle | Copyright |
12786 | Java | 1934 |
19264 | JavaScript | 1992 |
13331 | MySQL | 1919 |
16284 | Oracle | 1996 |
15729 | PERL | 1932 |
14356 | PHP | 1966 |
17695 | Pl/SQL | 1980 |
19354 | www.java2s.com | 1993 |
5. not in 其实相当于<> ALL, 因此在第三个实例中,SQL代码也可以这样写:
select *from book where bookid <> all(select distinct BookID from authorbook)
- 关于 JS 拖拽功能的冲突问题及解决方法
- 使用 SVG 和 JS 创建一个由星形变心形的动画
- 如何使用 Bootstrap 搭建更合理的 HTML 结构
- Java遍历Map对象的四种方式
- java 线程public void run()中值如何返回
- Jackson与spring框架整合的坑
- spring shiro整合时自动注入的问题
- mybatis获取update的id
- 点击!AWD攻防解题技巧在此!
- Docker 基础技术之 Linux namespace 详解
- Centos6下使用yum安装MariaDB
- Linux下部署Samba服务环境的操作记录
- SCP和Rsync远程拷贝的几个技巧
- Linux服务器更换主板后,网卡识别失败的处理方法
- MySQL 教程
- MySQL 安装
- MySQL 管理与配置
- MySQL PHP 语法
- MySQL 连接
- MySQL 创建数据库
- MySQL 删除数据库
- MySQL 选择数据库
- MySQL 数据类型
- MySQL 创建数据表
- MySQL 删除数据表
- MySQL 插入数据
- MySQL 查询数据
- MySQL where 子句
- MySQL UPDATE 查询
- MySQL DELETE 语句
- MySQL LIKE 子句
- mysql order by
- Mysql Join的使用
- MySQL NULL 值处理
- MySQL 正则表达式
- MySQL 事务
- MySQL ALTER命令
- MySQL 索引
- MySQL 临时表
- MySQL 复制表
- 查看MySQL 元数据
- MySQL 序列 AUTO_INCREMENT
- MySQL 处理重复数据
- MySQL 及 SQL 注入
- MySQL 导出数据
- MySQL 导入数据
- MYSQL 函数大全
- MySQL Group By 实例讲解
- MySQL Max()函数实例讲解
- mysql count函数实例
- MYSQL UNION和UNION ALL实例
- MySQL IN 用法
- MySQL between and 实例讲解