1

このクエリをどのように構成したいかを考えていて、少し苦労しています。

基本的に、ID が別のテーブルのオブジェクトを表す行で最も使用されている ID の数を取得しようとしていますが、ID は 2 列で発生する可能性があります。

1 つの列に対してドンドンしていたとき、このクエリは正常に機能しました。

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 つの列でグループ化しようとすると、グループは 2 つの列の組み合わせと見なされます。

最初のクエリを 2 回 (各列で 1 回) 使用すると、カウントを組み合わせて並べ替える簡単なスクリプトを 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 に答える