• 博客园logo
  • 会员
  • 周边
  • 新闻
  • 博问
  • 闪存
  • 众包
  • 赞助商
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
LOFLY
终其一生,编织快乐
博客园    首页    新随笔    联系   管理    订阅  订阅

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操作:

image

以下语句将t1和t2表中所有的结果集进行组合(不去重)

SELECT
  c1
FROM
  t1
UNION ALL
SELECT
  c2
FROM
  t2;

输出:


c1
--
1
2
3
2
3
4

下图说明了对t1和t2表的结果集进行UNION ALL操作:

image

SQLite UNION 运算符例子

让我们举一些使用 UNION 运算符的例子。我们将使用示例数据库中的员工和客户表。

1) 基本SQLite UNION 运算案例

此语句使用 UNION 运算符将雇员和客户的姓名合并为一个列表:

SELECT
  FirstName,
  LastName,
  'Employee' AS Type
FROM
  employees
UNION
SELECT
  FirstName,
  LastName,
  'Customer'
FROM
  customers;

image

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 运算符保留最终结果集中的重复行。

posted @ 2024-08-22 22:32  编织快乐  阅读(249)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2026
浙公网安备 33010602011771号 浙ICP备2021040463号-3