如何将带UNION的多SELECT查询结果合并为单行
修改SQL查询实现一行两列的统计结果
你当前使用UNION会把两个统计结果按行合并,这是因为UNION的作用是合并多个查询的结果集(行维度),而你需要的是把两个统计值放在同一行的不同列中,可通过以下两种方法实现:
方法一:子查询作为列直接查询
SELECT (SELECT COUNT(*) FROM Orders) AS OrderCount, (SELECT COUNT(*) FROM Customers) AS CustomerCount;
方法二:交叉连接两个单值结果集
SELECT o.OrderCount, c.CustomerCount FROM (SELECT COUNT(*) AS OrderCount FROM Orders) o CROSS JOIN (SELECT COUNT(*) AS CustomerCount FROM Customers) c;
说明
- 第一种方法将每个统计查询作为独立子查询放在
SELECT列表中,直接生成两个列,结果自然为一行两列。 - 第二种方法先分别生成包含单个统计值的临时结果集,再通过交叉连接(因每个临时结果集仅一行,交叉连接后只会得到一行数据)合并两个列。
两种方法最终都会得到你期望的输出格式:
| OrderCount | CustomerCount |
|---|---|
| 135 | 283 |
内容的提问来源于stack exchange,提问作者PixelPaul
相关产品推荐
相关产品推荐

