2

私はこのデータを持っており、フィールド 1、2、3、4 に異なる ID があり、データが重複しているケースを見つけようとしています。

id    field1 field2 field3 field4    
====  ====== ====== ===== =======    
1       A      B     C      D    
2       A      B     C      D    
3       A      A     C      B   
4       A      A     C      B

したがって、可能な限り、この場合、何らかの方法で表示したいと思います。

1 と 2 は重複 3 と 4 は重複

4

3 に答える 3

4

の代わりにSELECT DISTINCT、フィールドと行数を選択します。HAVING複数の行を持つ項目を除外するために使用します。例:

select field1
      ,field2
      ,field3
      ,field4
      ,count (*)
  from foo
 group by field1
         ,field2
         ,field3
         ,field4
having count (*) > 1

その後、クエリの結果に対して元のテーブルを結合できます。

于 2009-10-01T10:21:45.843 に答える
3

これを行う 1 つの方法は、having と group by を使用することです。


esben=# select * from test;
 id | a | b | c | d
----+---+---+---+---
  1 | 1 | 2 | 3 | 4
  2 | 1 | 2 | 3 | 4
  3 | 1 | 1 | 3 | 2
  4 | 1 | 1 | 3 | 2
(4 rows)

esben=# select count(id),a,b,c,d from test group by a,b,c,d having count(id) >1;
 count | a | b | c | d
-------+---+---+---+---
     2 | 1 | 2 | 3 | 4
     2 | 1 | 1 | 3 | 2
(2 rows)

ただし、これには実際の ID がリストされていませんが、必要な実際の出力がなければ、それを取得する方法を説明するのは困難です。

于 2009-10-01T10:24:24.980 に答える
1
SELECT * 
FROM [TableName]
WHERE ID IN(SELECT MIN(ID) 
            FROM [TableName] 
            GROUP BY CONCAT(field1, field2, field3, field4))

これにより、ID の 1 と 3 の完全な行が返されます

于 2009-10-01T10:21:54.703 に答える