Mysql使用Union结果不满足预期的问题

在处理业务需求时,遇到一个使用UNION的MySQL查询,发现查询结果只包含了第二个SELECT语句的数据。经过排查,发现在UNION关键字后添加小括号可以解决问题,使得预期的UNION结果得以正确显示。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天业务需求中需要用到UNION,SQL如下:

select p.id as id, p.`column` as `column`, p.`value` as `value`, p.history_begin_time as history_begin_time, p.history_end_time as history_end_time 
from cmdbcoresvrdb.p_fixednetworkelement p 
WHERE p.id = 0x11E8A2BD695CD4C692DB286ED288C859 and p.history_begin_time >= 1564649660400 and p.history_end_time <= 1564649840600 
UNION 
select p.id as id, p.`column` as `column`, p.`value` as `value`, p.history_begin_time as history_begin_time, p.history_end_time as history_end_time 
from cmdbcoresvrdb.p_fixednetworkelement p 
WHERE p.id = 0x11E8A2BD695CD4C692DB286ED288C859 and p.history_begin_time < 1564649660400
ORDER BY history_begin_time DESC LIMIT 1

运行之后发现UNION执行不正常,只有后边select的结果
后来在UNION后边加上了小括号,问题解决

select p.id as id, p.`column` as `column`, p.`value` as `value`, p.history_begin_time as history_begin_time, p.history_end_time as history_end_time 
from cmdbcoresvrdb.p_fixednetworkelement p 
WHERE p.id = 0x11E8A2BD695CD4C692DB286ED288C859 and p.history_begin_time >= 1564649660400 and p.history_end_time <= 1564649840600 
UNION 
(select p.id as id, p.`column` as `column`, p.`value` as `value`, p.history_begin_time as history_begin_time, p.history_end_time as history_end_time 
from cmdbcoresvrdb.p_fixednetworkelement p 
WHERE p.id = 0x11E8A2BD695CD4C692DB286ED288C859 and p.history_begin_time < 1564649660400
ORDER BY history_begin_time DESC LIMIT 1)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值