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

8147

被折叠的 条评论
为什么被折叠?



