二十四、MySQL UNION 操作符查询多张表

AI-摘要
Tianli GPT
AI初始化中...
介绍自己 🙈
生成本文简介 👋
推荐相关文章 📖
前往主页 🏠
前往爱发电购买
二十四、MySQL UNION 操作符查询多张表
云少二十四、MySQL UNION 操作符查询多张表
MySQL UNION
操作符用于连接两个以上的 SELECT
语句的结果组合到一个结果集合中
多个 SELECT 语句会删除重复的数据
UNION
操作符语法
MySQL UNION
操作符的语法格式如下
1 | SELECT expression1, expression2, ... expression_n |
参数 | 说明 |
---|---|
expression1, expression2, … expression_n | 要检索的列 |
tables | 要检索的数据表 |
WHERE conditions | 可选, 检索条件 |
DISTINCT | 可选,删除结果集中重复的数据 默认情况下 UNION 操作符已经删除了重复数据 所以 DISTINCT 修饰符对结果没啥影响 |
ALL | 可选,返回所有结果集,包含重复数据 |
范例数据
可以在 mysql>
命令行中运行以下语句填充范例数据
1 | DROP TABLE IF EXISTS `tbl_language`; |
tbl_language
表中的数据如下
1 | +----+--------+----------------------------+------------+ |
tbl_rank
表中的数据如下
1 | +----+--------+---------+------+---------+ |
SQL UNION
下面的 SQL 语句从 tbl_language
和 tbl_rank
表中选取所有 不同的 name(只有不同的值)
1 | SELECT name FROM tbl_language UNION SELECT name FROM tbl_rank ORDER BY name; |
执行以上 SQL 输出结果如下
1 | MariaDB [test2]> SELECT name FROM tbl_language UNION SELECT name FROM tbl_rank ORDER BY name; |
UNION 不能用于列出两个表中所有的 name
,UNION 只会选取不同的值
如果要选取重复的值,可以使用 UNION ALL
SQL UNION ALL
下面的 SQL 语句从 tbl_language
和 tbl_rank
表中选取所有的 name(可能有重复的值)
1 | SELECT name FROM tbl_language UNION ALL SELECT name FROM tbl_rank ORDER BY name; |
执行以上 SQL 输出结果如下
1 | MariaDB [test2]> SELECT name FROM tbl_language UNION ALL SELECT name FROM tbl_rank ORDER BY name; |
带有 WHERE 的 SQL UNION ALL
下面的 SQL 语句从 tbl_language
和 tbl_rank
表中选取所有的 Python
(可能有重复的值)
1 | SELECT name FROM tbl_language WHERE name="Python" UNION ALL SELECT name FROM tbl_rank WHERE name="Python" ORDER BY name; |
执行以上 SQL 输出结果如下
1 | MariaDB [test2]> SELECT name FROM tbl_language WHERE name="Python" UNION ALL SELECT name FROM tbl_rank WHERE name="Python" ORDER BY name; |
评论
匿名评论隐私政策
TwikooArtalk
✅ 你无需删除空行,直接评论以获取最佳展示效果