MySQL:两表取交集、并集、差集
在MySQL中,可以使用标准的SQL语句来取两个表的交集、并集以及差集。以下是相关的SQL操作:
- 交集(INTERSECT):
SELECT column_name(s)
FROM table1
INTERSECT
SELECT column_name(s)
FROM table2;
- 并集(UNION):
SELECT column_name(s)
FROM table1
UNION
SELECT column_name(s)
FROM table2;
注意:使用UNION时,默认去除重复行,如果想包含重复行,可以使用UNION ALL。
差集(MINUS):
MySQL中没有直接的MINUS操作符,但可以通过NOT EXISTS或NOT IN来实现。
使用NOT EXISTS:
SELECT column_name(s)
FROM table1
WHERE NOT EXISTS (
SELECT column_name(s)
FROM table2
WHERE table1.column_name(s) = table2.column_name(s)
);
使用NOT IN:
SELECT column_name(s)
FROM table1
WHERE column_name(s) NOT IN (
SELECT column_name(s)
FROM table2
);
注意:使用NOT IN时,结果可能会受到空值影响,因此,如果列可以包含空值,最好使用NOT EXISTS。
评论已关闭