MySQL中交集、并集、差集
在MySQL中,可以使用INTERSECT
、UNION
和EXCEPT
(在标准的SQL中是这样的,但在MySQL中,差集操作通常使用MINUS
)来进行交集、并集和差集的查询。但是,MySQL不直接支持EXCEPT
或MINUS
,而是使用NOT EXISTS
子句来表达差集。
交集(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;
差集(NOT EXISTS):
SELECT column_name(s) FROM table1 t1
WHERE NOT EXISTS (
SELECT 1 FROM table2 t2 WHERE t1.column_name = t2.column_name
);
请注意,在MySQL中,UNION
默认去除重复行,如果不想去除重复行,可以使用UNION ALL
。对于INTERSECT
,MySQL也没有直接支持,通常需要自连接或者使用变量来模拟。
评论已关闭