2017-06-05 7 views
0

重複1を省略し、Xの重複のNを選択します。私はすべての列valueがそうように複製される場合を選択することができるMySQLは、このテーブルを考慮

+-----+--------+ 
| id | value | 
+-----+--------+ 
| 1 | 22 | 
+-----+--------+ 
| 2 | 12 | 
+-----+--------+ 
| 3 | 22 | 
+-----+--------+ 
| 4 | 22 | 
+-----+ -------+ 

select value from table having count(value) > 1 ; 

この意志出力をIds 1 、3と4。

私がしようとしているのは、重複する場所を選択しますが、1つの重複を選択したままにしておきます。 Ids 3と4(または1と3など...省略された重複は問題ではなく、それだけです。

どうすればこの問題を解決できますか?

この質問は、あなたはフィルタのIDの値を選択し、他の全てをaggregatio機能を使用することができ

Using LIMIT within GROUP BY to get N results per group?

答えて

0

の重複されていない

select * from table 
    where (value, id) not in (
     select value, max(id) 
     from table 
     group by value 
     having count(value) > 1 
) 
    ; 
0

あなたに次のいずれかとして実行できます。

select * 
from test t1 
where exists (select 1 
       from test t2 
       where t2.value = t1.value 
       having count(value)>1) 
limit 2 

OR:

select t1.* 
    from test t1 inner join 
     (select value from test t2 having count(value)>1) t2 
     on t1.value = t2.value 
limit 2; 
関連する問題