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

如何修改UNION ALL查询,实现结果逐行交错排序?

调整SQL查询实现横向合并结果

我明白你的需求啦——原本用UNION ALL得到的是两行纵向排列的结果,现在想要把来自abc和def表的两组数据横向合并成一行展示,正好匹配你想要的目标格式。

修改后的SQL代码

SELECT 
    -- 给abc表的字段添加明确别名
    abc_sub.i_id AS abc_id,
    abc_sub.i_item AS abc_item,
    abc_sub.i_count AS abc_count,
    -- 给def表的字段添加明确别名
    def_sub.j_id AS def_id,
    def_sub.j_item AS def_item,
    def_sub.j_count AS def_count
FROM
    -- 第一个子查询获取abc表的目标记录
    (SELECT i_id, i_item, i_count FROM abc WHERE i_id = 123) AS abc_sub
-- 交叉连接两个子查询,因为每个子查询仅返回单条记录
CROSS JOIN
    -- 第二个子查询获取def表的目标记录
    (SELECT j_id, j_item, j_count FROM def WHERE j_id = 4567) AS def_sub

关键说明

  • 原查询用UNION ALL是纵向拼接两个结果集,所以返回两行;而改用子查询+CROSS JOIN是将两个单条结果横向合并,最终返回一行,完美匹配你想要的输出格式。
  • 给每个字段添加带表标识的别名(比如abc_id、def_item),能让结果更易读,清晰区分字段来源。
  • 如果你的子查询可能返回多条记录,CROSS JOIN会产生笛卡尔积,这时你需要根据业务逻辑用INNER JOIN关联对应字段,但从你的原查询条件来看,i_id=123和j_id=4567应该都是单条记录,所以CROSS JOIN完全适用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 09:45:25