SQL UNION 子句如何组合并去重结果行?

如题所述

在 SQL 中,UNION 子句是一个强大的工具,用于合并两个或更多 SELECT 语句的结果,前提是它们具有相同数量的列、数据类型和列的顺序。基本语法如下:

SELECT column1, column2

FROM table1

[WHERE condition]

UNION

SELECT column1, column2

FROM table2

[WHERE condition]

例如,如果有一个名为 CUSTOMERS 的表和一个名为 ORDERS 的表,你可以使用 UNION 来合并它们的信息,即使表之间存在重复的行。UNION ALL 子句则会保留所有重复的行,包括那些在两个 SELECT 中都出现的。

SELECT ID, NAME, AMOUNT, DATE

FROM CUSTOMERS

LEFT JOIN ORDERS ON CUSTOMERS.ID = ORDERS.CUSTOMER_ID

UNION ALL

SELECT ID, NAME, AMOUNT, DATE

FROM CUSTOMERS

RIGHT JOIN ORDERS ON CUSTOMERS.ID = ORDERS.CUSTOMER_ID

与 UNION 相似的,SQL 还提供了 INTERSECT(交集)和 EXCEPT(差集)子句,它们分别返回两个 SELECT 语句中都有的行和仅在第一个 SELECT 中存在的行。这些子句在需要筛选特定结果集时非常实用。
温馨提示:答案为网友推荐,仅供参考
相似回答