mysql union all 去重
  nWgWMQU6mNNG 2023年11月02日 132 0

MySQL UNION ALL去重

在MySQL中,使用UNION ALL可以将多个查询结果合并起来。然而,有时候我们希望在合并结果时去除重复的记录。本文将介绍如何在使用UNION ALL时去重。

什么是UNION ALL?

UNION ALL是MySQL中用于合并查询结果的操作符。它可以将多个SELECT语句的结果集合并成一个结果集,并且保留所有的记录,包括重复的记录。

语法如下:

SELECT column1, column2, ...
FROM table1
UNION ALL
SELECT column1, column2, ...
FROM table2

UNION ALL和UNION的区别

在介绍去重的方法之前,我们先来看一下UNION ALLUNION之间的区别。

UNION操作符和UNION ALL操作符的区别在于UNION会对结果进行去重,而UNION ALL不会去重。

例如,我们有两张表table1table2,它们的结构如下:

CREATE TABLE table1 (
  id INT PRIMARY KEY,
  name VARCHAR(50)
);

CREATE TABLE table2 (
  id INT PRIMARY KEY,
  name VARCHAR(50)
);

现在我们往这两张表中插入一些数据:

INSERT INTO table1 (id, name)
VALUES (1, 'Alice'),
       (2, 'Bob'),
       (3, 'Alice');

INSERT INTO table2 (id, name)
VALUES (4, 'David'),
       (5, 'Alice'),
       (6, 'Eve');

如果我们使用UNION操作符来合并这两张表的数据:

SELECT id, name
FROM table1
UNION
SELECT id, name
FROM table2;

得到的结果将会是:

+----+-------+
| id | name  |
+----+-------+
|  1 | Alice |
|  2 | Bob   |
|  4 | David |
|  5 | Alice |
|  6 | Eve   |
+----+-------+

可以看到,结果中去除了重复的记录。

而如果我们使用UNION ALL操作符来合并这两张表的数据:

SELECT id, name
FROM table1
UNION ALL
SELECT id, name
FROM table2;

得到的结果将会是:

+----+-------+
| id | name  |
+----+-------+
|  1 | Alice |
|  2 | Bob   |
|  3 | Alice |
|  4 | David |
|  5 | Alice |
|  6 | Eve   |
+----+-------+

可以看到,结果中保留了重复的记录。

使用UNION ALL去重

虽然UNION ALL不会去重,但我们可以通过使用子查询加上DISTINCT关键字的方式来实现去重。

例如,我们要合并table1table2的数据,并去除重复的记录,可以这样写:

SELECT DISTINCT id, name
FROM (
  SELECT id, name
  FROM table1
  UNION ALL
  SELECT id, name
  FROM table2
) AS temp;

得到的结果将会是:

+----+-------+
| id | name  |
+----+-------+
|  1 | Alice |
|  2 | Bob   |
|  3 | Alice |
|  4 | David |
|  5 | Alice |
|  6 | Eve   |
+----+-------+

可以看到,结果中重复的记录已经被去除。

总结

在使用UNION ALL合并查询结果时,如果需要去除重复的记录,可以使用子查询加上DISTINCT关键字的方式来实现。

通过本文的介绍,你应该对MySQL中的UNION ALL和去重有了更好的了解。希望本文能够帮助你掌握这一知识点。

erDiagram
    table1 {
        INT id
        VARCHAR(50) name
    }

    table2 {
        INT id
        VARCHAR(50) name
    }

    table1 ||--|{ table2
flowchart TD
    A[开始]
    B[插入数据]
    C[使用UNION ALL合并数据]
    D[去重]
    E[结束]

    A --> B
    B -->
【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
  xaeiTka4h8LY   2024年05月31日   46   0   0 MySQLSQL
  xaeiTka4h8LY   2024年05月17日   52   0   0 数据库JavaSQL
  xaeiTka4h8LY   2024年05月17日   51   0   0 数据库SQL
  Dk8XksB4KnJY   2023年12月23日   32   0   0 字段字段SQLSQL
nWgWMQU6mNNG