Roo*_*ter 1 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
Run Code Online (Sandbox Code Playgroud)
但现在我想做类似的事情,除了检查一个名为rb_2as well 的列,该列可以包含所有 id 的列rb_1。
当我尝试按 2 列进行分组时,它仅将组视为两列的组合。
如果我使用第一个查询两次(每列一次),我可以用 PHP 编写一个快速脚本来对计数进行组合和排序,但我认为可能有一种方法可以使用 MySQL 来实现此目的。
以下查询应该执行您想要的操作:
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;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3521 次 |
| 最近记录: |