计划更文 2/100
- 查询两条query语句的并集:UNION 或 UNION ALL
-
UNION
这个查询将返回两个查询结果集的并集,并消除重复记录。
SELECT c1, c2 FROM table1 WHERE condition1 -- query1 UNION SELECT c1, c2 FROM table2 WHERE condition2 -- query2 -
UNION ALL
如果想保留重复记录,可以使用“UNION ALL”
SELECT c1, c2 FROM table1 WHERE condition1 -- query1 UNION ALL SELECT c1, c2 FROM table2 WHERE condition2 -- query2注意:为了使 UNION 或 UNION ALL 操作有效,query1和query2查询结果的列数和数据类型必须相同。
-
查询两条query语句的交集:INTERSECT
-- 返回‘query1’和‘query2’结果集中的共同记录。两者的结果集的列数和数据类型必须相同 SELECT c1, c2 FROM table1 WHERE condition1 INTERSECT SELECT c1, c2 FROM table2 WHERE condition2;注意:"INTERSECT"在某些数据库中可能不受支持,例如MySQL。在不支持的数据库中,可以使用“INNER JOIN”或者“EXISTS”子句来实现类似的功能。
-
查询两条query语句的差集:MINUS
-- 这个查询将返回'query1'存在但'query2'中不存在的记录 SELECT c1, c2 FROM table1 WHERE condition1 -- query1 MINUS SELECT c1, c2 FROM table2 WHERE condition2; -- query2注意:在MySQL中,没有“MINUS”操作符。在MySQL中,可以使用“LEFT JOIN”或者“NOT EXISTS”子句来实现类似的功能。
-- MySQL中使用‘NOT EXISTS’子句或‘LEFT JOIN’ SELECT c1, c2 FROM table1 WHERE condition1 AND NOT EXISTS ( SELECT c1, c2 FROM table2 WHERE condition2 );