📅  最后修改于: 2023-12-03 15:20:16.635000             🧑  作者: Mango
SQL合并语句可以将来自不同数据表或查询的数据合并成一个结果集。常见的SQL合并语句包括UNION、UNION ALL、INTERSECT和EXCEPT。
UNION操作将多个SELECT语句的结果集合并成一个结果集,并去除重复的行。使用UNION的条件是,每个SELECT语句必须返回相同的列数和相同或相兼容的数据类型。语法如下:
SELECT column1 [, column2 ]
FROM table1
UNION [ALL]
SELECT column1 [, column2 ]
FROM table2
[WHERE condition];
例子:
SELECT city, country FROM customers
UNION
SELECT city, country FROM suppliers;
以上代码将会返回一个合并的结果集,包含customers和suppliers数据表中的所有城市和国家,同时去除重复的行。
与UNION不同的是,UNION ALL不会去除重复的行,而是将多个结果集按顺序合并成一个结果集。语法如下:
SELECT column1 [, column2 ]
FROM table1
UNION ALL
SELECT column1 [, column2 ]
FROM table2
[WHERE condition];
例子:
SELECT city, country FROM customers
UNION ALL
SELECT city, country FROM suppliers;
以上代码将会返回一个合并的结果集,包含customers和suppliers数据表中的所有城市和国家,包含重复的行。
INTERSECT操作将多个结果集的公共部分合并成一个结果集。使用INTERSECT的条件是,每个SELECT语句必须返回相同的列数和相同或相兼容的数据类型。语法如下:
SELECT column1 [, column2 ]
FROM table1
INTERSECT
SELECT column1 [, column2 ]
FROM table2
[WHERE condition];
例子:
SELECT city, country FROM customers
INTERSECT
SELECT city, country FROM suppliers;
以上代码将会返回一个合并的结果集,包含customers和suppliers数据表中都存在的所有城市和国家。
EXCEPT操作将第一个结果集减去第二个结果集中的行,并返回剩余的行。使用EXCEPT的条件是,每个SELECT语句必须返回相同的列数和相同或相兼容的数据类型。语法如下:
SELECT column1 [, column2 ]
FROM table1
EXCEPT
SELECT column1 [, column2 ]
FROM table2
[WHERE condition];
例子:
SELECT city, country FROM customers
EXCEPT
SELECT city, country FROM suppliers;
以上代码将会返回一个合并的结果集,包含customers数据表中存在,而suppliers数据表中不存在的所有城市和国家。