You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MySQL中UNION结果行数少于单个子查询的原因是什么?

MySQL UNION 合并结果行的特性与异常情况

UNION 可用于合并两个子查询的结果行,基本语法如下:

SELECT column_name FROM table1
UNION
SELECT column_name FROM table2;

默认情况下,MySQL 中的 UNION 等效于 UNION DISTINCT,会对两个子查询结果中的重复行进行去重。举个例子:

SELECT * FROM table_1;

--------
| name |
--------
| John |
| Mary |
--------

SELECT * FROM table_2;

---------
| name  |
---------
| John  |
| Steve |
---------

SELECT * FROM table1
UNION
SELECT * FROM table2;

---------
| name  |
---------
| John  |
| Mary  |
| Steve |
---------

可以看到最终结果里 John 只出现一次,这就是去重的效果。

由此可得正常情况下的行数关系:UnionRows.length <= Table1Rows.length + Table2Rows.length。

但实际使用中遇到了异常情况:UnionRows.length < Table1Rows.length,也就是合并两个集合后的行数居然少于其中一个集合的行数,而按预期应该满足 UnionRows.length >= Table1Rows.length 且 UnionRows.length >= Table2Rows.length。

内容的提问来源于stack exchange,提问作者philippe_b

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 11:28:12