2016-10-09 3 views
0

まず、この質問が以前に尋ねられた場合、私は本当に検索を試みましたが、探していたものが見つかりませんでした。MySQLの選択他の行に複数の値がある場合

これは私のテーブルです私は2回以上同じ正確な値を持つユーザーIDを選択するクエリを持っています。

| USER ID|COLOR| 
---------|------- 
| 1  | BLUE 
| 2  | BLUE 
| 3  | RED 
| 4  | BLUE 

したがって、この場合、私のクエリは

| USER ID| 
|--------| 
| 1  | 
| 2  | 
| 4  | 

はどうもありがとうございまし返します!

select userid 
from yourtable t 
where exists (
    select 1 
    from yourtable t2 
    where t.userid <> t2.userid and t.color = t2.color 
) 

答えて

2

あなたはcolorが3回以上繰り返している行を選択するように見える:

+0

追加するには、140k行のテーブルで検索します。私は正確に同じIPアドレスを持つ人々のためのユーザーIDを取得したい。私は今、これを試してみるつもりです、事前に感謝します。 – user1978752

1

はここexistsを使用して一つの選択肢です。

select t.* 
from t join 
    (select color, count(*) as cnt 
     from t 
     group by color 
    ) tt 
    on tt.color = t.color and cnt > 2; 

あなたは以上 2以上の一致を求めて:ここでは一つの方法です。

select color, group_concat(userid) 
from t 
group by color 
having count(*) >= 2; 
+0

OPが「2回以上」ではなく、「2以上を尋ねた:あなただけの複数のIDをしたい場合は、

select t.* from t where exists (select 1 from t tt where t.color = tt.color and t.userid <> tt.userid ); 

または:2つの以上の試合のために、あなたはsgeddesのソリューションを使用します回 "。 –

+0

@ GordonLinoff - 優秀な点、私はそれが気づいていなかった。あなたの答えは> 2を扱い、これは> 1を扱うでしょう。 OPが> 2を望むと仮定すると、この応答は削除されます... – sgeddes

+0

。 。 OPは混乱しているようだ。 –

関連する問題