大家好我有两个不同的问题:
SELECT ROUND(x, -1) AS range,
COUNT(*)
FROM tbl_name
GROUP BY range;
和
SELECT ROUND(y, -1) AS range,
COUNT(*)
FROM tbl_name
GROUP BY range;
两个查询都返回两列,如下所示: 0 | 22
我想结合这两个查询,这些查询返回3 coloumns像这样 0 | 22 | 20
答案 0 :(得分:1)
如果你只有一行,那么解决方案是微不足道的。只需使用join
即可。类似的东西:
select q1.range, q1.cnt, q2.cnt
from (<query1>) q1 join (<query2>) q2 on q1.range = q2.range;
当两个查询为range
生成不同的值时,会出现问题。然后一个简单的join
将无效。 SQL提供full outer join
,但MySQL不支持它。在这种情况下,您可以:
select range, sum(xcnt), sum(ycnt)
from ((SELECT ROUND(x, -1) AS range, COUNT(*) as xcnt, 0 as ycnt
FROM tbl_name
GROUP BY range
) union all
(SELECT ROUND(y, -1) AS range, 0, COUNT(*)
FROM tbl_name
GROUP BY range
)
) t
group by range;