本章将讨论 UNION
:联合(并集)查询、INTERSECT
:交集查询和EXCEPT
:差集查询。
联合查询
联合查询用于将多个SELECT
查询的结果组成一个结果集进行返回。
UNION
会将结果中,重复的行去除,如果要保留这些重复的行,可以使用 UNION ALL
。
联合查询必须满足以下条件:所有 SELECT
返回的字段的数据类型、顺序、个数要一致。
示例:
-- 简单示例:组合两张表的数据
SELECT * FROM top_rated_films
UNION
SELECT * FROM most_popular_films;
/*
结果只有5行,因为UNION 删除了1个重复行:title 为 'The Godfather'的行
*/
-- 简单示例:组合两张表的数据,并保留重复行
SELECT * FROM top_rated_films
UNION ALL
SELECT * FROM most_popular_films;
-- 与 ORDER BY 配合
SELECT * FROM top_rated_films
UNION ALL
SELECT * FROM most_popular_films
ORDER BY title;
交集查询
返回多个结果的交集。
差集查询
返回第一个表中,不存在于第二个表中的记录。
SELECT * FROM top_rated_films
EXCEPT
SELECT * FROM most_popular_films;