数据库-in子句-exists子句

本文深入探讨了SQL查询的关键概念,如IN、EXISTS、NOT IN、UNION和UNION ALL的使用方法,通过实例展示了如何高效地进行数据筛选和整合,是数据库操作人员和数据分析师的必备指南。

in和exist关键词的用法

关联子查询其他的关键字使用:
回忆:age=23 or age=24 等价于 age in (23,24)
in 表示条件应该是在多个列值中。
in:使用在where后面,经常表示是一个列表中的数据,只要被查询的数据在这个列表中存在即可。

mysql> select * from A where A_ID in(1,2,3);
+‐‐‐‐‐‐+‐‐‐‐‐‐‐‐+
| A_ID | A_NAME |
+‐‐‐‐‐‐+‐‐‐‐‐‐‐‐+
| 1 | apple |
| 2 | orange |
| 3 | banana |
+‐‐‐‐‐‐+‐‐‐‐‐‐‐‐+
3 rows in set (0.00 sec)
mysql> select * from A where A_ID =1 or A_ID =2 or A_ID =3;
+‐‐‐‐‐‐+‐‐‐‐‐‐‐‐+
| A_ID | A_NAME |
+‐‐‐‐‐‐+‐‐‐‐‐‐‐‐+
| 1 | apple |
| 2 | orange |
| 3 | banana |
+‐‐‐‐‐‐+‐‐‐‐‐‐‐‐+
//not in
mysql> select * from A where A_ID not in (1,2,3,4);
Empty set (0.00 sec)
mysql> select * from A where A_ID not in (3,4);
+‐‐‐‐‐‐+‐‐‐‐‐‐‐‐+
| A_ID | A_NAME |
+‐‐‐‐‐‐+‐‐‐‐‐‐‐‐+
| 1 | apple |
| 2 | orange |
+‐‐‐‐‐‐+‐‐‐‐‐‐‐‐+
2 rows in set (0.00 sec)

exists: 
exists:表示存在,当子查询的结果存在,就会显示主查询中的所有数据。
使用exists完成:

mysql> select * from A where exists(select A_ID from B); 
+‐‐‐‐‐‐+‐‐‐‐‐‐‐‐+ 
| A_ID | A_NAME | 
+‐‐‐‐‐‐+‐‐‐‐‐‐‐‐+ 
| 1 | apple | 
| 2 | orange | 
| 3 | banana | 
+‐‐‐‐‐‐+‐‐‐‐‐‐‐‐+ 
mysql> select * from A where not exists(select A_ID from B); 

union 和union all使用法

UNION 语句:用于将不同表中相同列中查询的数据展示出来;(不包括重复数据)
UNION ALL 语句:用于将不同表中相同列中查询的数据展示出来;(包括重复数据)

mysql> select * from A union select * from B;
+‐‐‐‐‐‐+‐‐‐‐‐‐‐‐+
| A_ID | A_NAME |
+‐‐‐‐‐‐+‐‐‐‐‐‐‐‐+
| 1 | apple |
| 2 | orange |
| 3 | banana |
| 1 | 2.3 |
| 2 | 3.5 |
| 4 | NULL |
+‐‐‐‐‐‐+‐‐‐‐‐‐‐‐+
6 rows in set (0.00 sec)
mysql> select * from A union all select * from B;
+‐‐‐‐‐‐+‐‐‐‐‐‐‐‐+
| A_ID | A_NAME |
+‐‐‐‐‐‐+‐‐‐‐‐‐‐‐+
| 1 | apple |
| 2 | orange |
| 3 | banana |
| 1 | 2.3 |
| 2 | 3.5 |
| 4 | NULL |
+‐‐‐‐‐‐+‐‐‐‐‐‐‐‐+

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值