SQLite UNION
摘要:在本教程中,您将学习如何使用 SQLite UNION 运算符将两个查询的结果集合并为一个结果集。
引入SQLite UNION 算子
有时,您需要将多个查询的结果合并为一个结果集。为此,您可以使用 UNION 运算符。
以下是 UNION 运算符的语法:
query1
UNION [ALL]
query2;
在这个语句中:
- 首先,指定第一个查询。
- 其次,使用 UNION 运算符表示您想要将第一个查询的结果集与下一个查询的结果集合并。
- 第三,指定第二个查询。
UNION 运算符会消除最终结果集中的重复行。如果要保留重复的行,可以使用 UNION ALL 运算符。
以下是使用 UNION 运算符的查询规则:
- 查询(查询 1 和查询 2)具有相同数量的列。
- 相应的列必须具有兼容的数据类型。
- 第一个查询的列名决定了组合结果集的列名。
- 如果您使用 GROUP BY 和 HAVING 子句,它们将应用于每个查询,而不是最终结果集。
- 如果使用ORDER BY子句,它将应用于组合结果集,而不是单个结果集。
请注意,UNION 和 JOIN(例如 INNER JOIN 或 LEFT JOIN)之间的区别在于,JOIN 子句组合来自多个相关表的列,而 UNION 运算符组合来自多个结果集的行。
假设您有两个表 t1 和 t2,其结构如下:
CREATE TABLE t1 (c1 INT);
INSERT INTO
t1 (c1)
VALUES
(1),
(2),
(3);
CREATE TABLE t2 (c2 INT);
INSERT INTO
t2 (c2)
VALUES
(2),
(3),
(4);
以下语句使用 UNION 运算符组合 t1 和 t2 表的结果集:
SELECT c1 FROM t1
UNION
SELECT c2 FROM t2;
这里的输出:
c1
--
1
2
3
4
下图说明了t1和t2表的UNION操作:

以下语句将t1和t2表中所有的结果集进行组合(不去重)
SELECT
c1
FROM
t1
UNION ALL
SELECT
c2
FROM
t2;
输出:
c1
--
1
2
3
2
3
4
下图说明了对t1和t2表的结果集进行UNION ALL操作:

SQLite UNION 运算符例子
让我们举一些使用 UNION 运算符的例子。我们将使用示例数据库中的员工和客户表。
1) 基本SQLite UNION 运算案例
此语句使用 UNION 运算符将雇员和客户的姓名合并为一个列表:
SELECT
FirstName,
LastName,
'Employee' AS Type
FROM
employees
UNION
SELECT
FirstName,
LastName,
'Customer'
FROM
customers;

2) UNION结合ORDER BY的使用例子
此示例使用 UNION 运算符将员工和客户的姓名合并为一个列表。此外,它使用 ORDER BY 子句按名字和姓氏对姓名列表进行排序。
SELECT
FirstName,
LastName,
'Employee' AS Type
FROM
employees
UNION
SELECT
FirstName,
LastName,
'Customer'
FROM
customers
ORDER BY
FirstName,
LastName;
总结
- 使用 UNION 运算符将两个结果集中的行合并为一个结果集。
- 使用 UNION ALL 运算符保留最终结果集中的重复行。
浙公网安备 33010602011771号