合并两个不同的查询

时间:2014-01-28 17:21:31

标签: mysql

大家好我有两个不同的问题:

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

1 个答案:

答案 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;