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

SQL中如何将UNION联合查询的结果拆分至不同独立列展示

实现方案

你原来使用UNION是纵向拼接结果集,所以返回多行单列结果,要得到单行多列的统计结果,可使用以下两种写法,优先推荐第一种条件聚合写法,仅需扫描一次表,性能更高。

写法1:条件聚合(推荐)

SELECT
    COUNT(CASE WHEN column2 > 10 THEN 1 END) AS Column1,
    COUNT(CASE WHEN column3 > 10 THEN 1 END) AS Column2,
    COUNT(CASE WHEN column3 > 10 THEN 1 END) AS Column3 -- 若第三个统计的判断条件不同,修改此处即可
FROM `table`

如果你的数据库支持IF函数(如MySQL、PostgreSQL 12+等),可以简化为更短的写法:

SELECT
    COUNT(IF(column2 > 10, 1, NULL)) AS Column1,
    COUNT(IF(column3 > 10, 1, NULL)) AS Column2,
    COUNT(IF(column3 > 10, 1, NULL)) AS Column3
FROM `table`

写法2:子查询拼接

如果你的统计逻辑来自不同表,或者需要兼容更老旧的SQL方言,可以用子查询分别统计每个值作为单独列返回:

SELECT
    (SELECT COUNT(*) FROM `table` WHERE column2 > 10) AS Column1,
    (SELECT COUNT(*) FROM `table` WHERE column3 > 10) AS Column2,
    (SELECT COUNT(*) FROM `table` WHERE column3 > 10) AS Column3

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 07:39:02