1

我正在尝试弄清楚我想如何构造这个查询并且遇到了一些困难。

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

当我只是将它用于一列时,此查询运行良好:

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

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

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

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

4

1 回答 1

4

以下查询应该做你想做的事:

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;
于 2012-08-20T18:29:35.217 回答