MySQL 知识点复习- 5. UNION

基本语法结构

sql 复制代码
SELECT column1, column2 FROM table1
UNION
SELECT column1, column2 FROM table2;
  1. 列数要求

    所有 SELECT 语句的列数必须完全一致,否则会触发语法错误。

  2. 列名规则

    最终结果集的列名以第一个 SELECT 语句中的列名为准,后续语句的列名不影响输出。

UNION 与 UNION ALL 的区别

  • UNION:合并结果集并自动去除重复记录。
  • UNION ALL:合并结果集并保留所有记录(包括重复项)。

示例 1: 使用 UNION 合并用户和产品名称
sql 复制代码
SELECT name FROM users
UNION
SELECT product_name FROM products;

结果集示例

name
Alice
Bob
Laptop
Phone
示例 2: 使用 UNION ALL 合并员工薪资(含重复)
sql 复制代码
SELECT name, salary FROM employees
UNION ALL
SELECT name, salary FROM contractors;

结果集示例

name salary
Alice 5000
Bob 6000
Alice 5000
Carol 5500

结果集排序规则

  • ORDER BY 需置于最后一个 SELECT 语句后,对整个结果集生效。
示例 3: 合并学生和教师年龄并降序排序
sql 复制代码
SELECT name, age FROM students
UNION
SELECT name, age FROM teachers
ORDER BY age DESC;

结果集示例

name age
Bob 45
Alice 30
Carol 25
关键注意事项
  • 所有 SELECT 语句的列数必须一致。
  • 对应列的数据类型应兼容。
  • UNION 会隐式去重,可能增加性能开销;明确不需要去重时优先使用 UNION ALL
相关推荐
九皇叔叔20 小时前
《MySQL 体系架构详解:Server 层、SQL 执行流程与 InnoDB、MyISAM、MEMORY 存储引擎》
sql·mysql·架构
这个DBA有点耶1 天前
SQL:2023新特性详解:JSON_TABLE、GREATEST/LEAST、QUALIFY 到底怎么用?
数据库·sql·mysql
小小龙学IT1 天前
Qt 数据库编程(Qt SQL 模块)深度解析
数据库·sql·qt
疯狂打码的少年1 天前
【数据库技术】SQL概述与数据定义(DDL:CREATE/DROP/ALTER)
数据库·笔记·sql·oracle
Blockchina1 天前
Codex安全盲区:我用4组本地测试复盘SQLi、XSS、越权与路径穿越
sql·安全·xss
山峰哥2 天前
数据库工程与查询优化案例深度复盘‌
数据库·sql·oracle·编辑器·深度优先·宽度优先
茶栀(*´I`*)2 天前
数据库零基础入门指南:从基本概念到 SQL 实战
数据库·sql
zcn1262 天前
exists子查询改写思考
数据库·sql·sql优化改写
黄俊懿2 天前
【架构师从入门到进阶】第五章:DNS&CDN&网关优化思路——第八节:网关-注入攻击与预防
sql·网络安全·架构·系统架构·架构师·架构设计
HackTwoHub2 天前
Butter_Cookie 黄油曲奇|浏览器渗透插件,云存储检测、XSS、SQL 注入一站式 Web 安全测试工具
前端·sql·安全·web安全·网络安全·自动化·xss