mysql group by 2列结合了结果

时间:2012-08-20 17:21:58

标签: mysql group-by query-optimization

我正在试图弄清楚我是如何构建这个查询的,并且遇到了一些困难。

基本上,我试图计算一行中最常用的id,其中id表示另一个表中的对象,除了id可以出现在2列中。

当我刚刚访问一列时,此查询工作正常:

SELECT rb_1,
       Count(*) AS num
FROM   ci_lineups
GROUP  BY rb_1
ORDER  BY Count(*) DESC
LIMIT  10

但是现在我想要做类似的事情,除了检查一个名为rb_2的列,它可以拥有所有id rb_1

当我尝试按2列分组时,它只将组视为两列的组合。

我可以在PHP中编写一个快速脚本来组合和排序计数,如果我使用我的第一个查询两次,每列一次,但我认为可能有一种方法可以使用MySQL。

1 个答案:

答案 0 :(得分:2)

以下查询应该执行您想要的操作:

SELECT field, sum(cnt)
FROM (
  SELECT rb_1 as field, count(*) as cnt
  FROM ci_lineups
  GROUP BY rb_1
  UNION ALL
  SELECT rb_2 as field, count(*) as cnt
  FROM ci_lineups
  GROUP BY rb_2
)
GROUP BY field
ORDER BY sum(cnt) DESC
LIMIT 10;
相关问题