📜  sql 合并语句 - SQL (1)

📅  最后修改于: 2023-12-03 15:20:16.635000             🧑  作者: Mango

SQL合并语句

SQL合并语句可以将来自不同数据表或查询的数据合并成一个结果集。常见的SQL合并语句包括UNION、UNION ALL、INTERSECT和EXCEPT。

UNION

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 ALL

与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操作将多个结果集的公共部分合并成一个结果集。使用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操作将第一个结果集减去第二个结果集中的行,并返回剩余的行。使用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数据表中不存在的所有城市和国家。