0

こんにちは、同じ値の行数を計算しようとしています。

id,value
1 | a
2 | b
3 | c
4 | d
5 | e

そして私の質問は

select value, count(*) as Count from mytable  where id in('4','2','4','1','4') group by value having count(*) > 1

私の期待される出力は、

value,Count
 d |  3
 b |  1
 a |  1

ありがとう、助けていただければ幸いです

4

2 に答える 2

0

それを試してください:

  SELECT value, count(value) AS Count 
  FROM mytable m
    WHERE value = m.value
    GROUP BY value
于 2013-01-30T08:16:18.010 に答える
0
SELECT t.id, t.value, COUNT(t.id) 
FROM 
  test t
  JOIN 
    ( SELECT 1 AS id
      UNION ALL SELECT 3
      UNION ALL SELECT 3
      UNION ALL SELECT 4
      UNION ALL SELECT 1
      UNION ALL SELECT 1 ) AS tmp
    ON t.id = tmp.id
GROUP BY t.id

sqlfiddle.com のサンプル

参照: JOIN/UNION を使用せずに WHERE IN 句から重複を返すように MySQL を強制しますか?

もちろん、IN パラメータは動的であるため、tmp テーブルに対応する SQL ステートメントを生成する必要があります。

これが SQL のみの方法です。もう1つの可能性は、質問にあるようなクエリを作成し、その後、INパラメーターに渡されたカウントに行をプログラムで関連付けることです。

于 2013-01-30T08:25:48.920 に答える