首页
学习
活动
专区
圈层
工具
发布

mysql union的用法

MySQL UNION 的用法

基础概念

UNION 是 MySQL 中的一个集合操作符,用于合并两个或多个 SELECT 语句的结果集。它会自动去除重复的行,并且默认按照列的顺序进行排序。

语法

代码语言:txt
复制
SELECT column_name(s) FROM table1
UNION
SELECT column_name(s) FROM table2;

相关优势

  1. 简化查询:可以将多个查询合并为一个查询,减少代码量。
  2. 去重:默认情况下,UNION 会去除结果集中的重复行。
  3. 排序UNION 会默认对结果集进行排序。

类型

  1. UNION:默认去重并排序。
  2. UNION ALL:不去重,但仍然会排序。

应用场景

  1. 合并多个查询结果:当你需要从多个表中获取数据并合并成一个结果集时。
  2. 去重:当你需要去除重复行时。
  3. 排序:当你需要对结果集进行排序时。

示例代码

假设有两个表 employeescontractors,它们都有 namesalary 列:

代码语言:txt
复制
-- employees 表
CREATE TABLE employees (
    id INT PRIMARY KEY,
    name VARCHAR(100),
    salary DECIMAL(10, 2)
);

-- contractors 表
CREATE TABLE contractors (
    id INT PRIMARY KEY,
    name VARCHAR(100),
    salary DECIMAL(10, 2)
);

-- 插入示例数据
INSERT INTO employees (id, name, salary) VALUES
(1, 'Alice', 50000),
(2, 'Bob', 60000),
(3, 'Charlie', 55000);

INSERT INTO contractors (id, name, salary) VALUES
(1, 'David', 55000),
(2, 'Eve', 65000),
(3, 'Alice', 50000);

使用 UNION 合并两个表的结果:

代码语言:txt
复制
SELECT name, salary FROM employees
UNION
SELECT name, salary FROM contractors;

输出:

代码语言:txt
复制
+---------+---------+
| name    | salary  |
+---------+---------+
| Alice   |  50000  |
| Bob     |  60000  |
| Charlie |  55000  |
| David   |  55000  |
| Eve     |  65000  |
+---------+---------+

遇到的问题及解决方法

问题1:结果集未按预期排序

  • 原因UNION 默认会对结果集进行排序,但有时可能不符合预期。
  • 解决方法:可以使用 ORDER BY 子句对最终结果进行排序。
代码语言:txt
复制
SELECT name, salary FROM employees
UNION
SELECT name, salary FROM contractors
ORDER BY salary DESC;

问题2:结果集中包含重复行

  • 原因:如果使用 UNION ALL,结果集中会包含重复行。
  • 解决方法:使用 UNION 而不是 UNION ALL
代码语言:txt
复制
SELECT name, salary FROM employees
UNION
SELECT name, salary FROM contractors;

参考链接

MySQL UNION 语法

希望这些信息对你有所帮助!如果有更多问题,请随时提问。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

没有搜到相关的沙龙

领券