摘要
在 MySQL 中求差集,即找出两个表中存在于第一个表但不包含在第二个表中的记录,可以通过使用 NOT IN 或 EXCEPT 运算符实现。NOT IN 运算符更适合于小数据集,而 EXCEPT 运算符更适合于大数据集。
详细说明
NOT IN 运算符
NOT IN 运算符使用子查询查找不在第二个表中的记录。语法如下:
SELECT * FROM table1
WHERE column NOT IN (SELECT column FROM table2);
例子
假设我们有以下两个表:
table1:
+----+--------+
| id | name |
+----+--------+
| 1 | John |
| 2 | Mary |
| 3 | Bob |
+----+--------+
table2:
+----+--------+
| id | name |
+----+--------+
| 1 | John |
| 2 | Mary |
+----+--------+
使用 NOT IN 运算符求出 table1 中不存在于 table2 中的记录:
SELECT * FROM table1
WHERE id NOT IN (SELECT id FROM table2);
结果:
+----+--------+
| id | name |
+----+--------+
| 3 | Bob |
+----+--------+
EXCEPT 运算符
EXCEPT 运算符直接从两个表中删除交集记录。语法如下:
SELECT * FROM table1
EXCEPT
SELECT * FROM table2;
例子
使用 EXCEPT 运算符求出 table1 中不存在于 table2 中的记录:
SELECT * FROM table1
EXCEPT
SELECT * FROM table2;
结果:
+----+--------+
| id | name |
+----+--------+
| 3 | Bob |
+----+--------+
性能差异
在小数据集上,NOT IN 运算符和 EXCEPT 运算符的性能差异很小。但是,在处理大数据集时,EXCEPT 运算符通常比 NOT IN 运算符更快。原因在于,EXCEPT 运算符使用哈希表来消除交集记录,而 NOT IN 运算符需要对第二个表进行多次扫描。
注意事项
以上就是mysql 如何求差集的详细内容,更多请关注编程网其它相关文章!
--结束END--
本文标题: mysql 如何求差集
本文链接: https://www.lsjlt.com/wiki/bacacd0dac.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
下载Word文档到电脑,方便收藏和打印~
2024-10-23
2024-10-22
2024-10-22
2024-10-22
2024-10-22
2024-10-22
2024-10-22
2024-10-22
2024-10-22
2024-10-22
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0