我有这些数据,我正在尝试查找字段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是重复的
答案 0 :(得分:4)
而不是SELECT DISTINCT
,选择字段和行数。使用HAVING
过滤掉多行的项目,例如:
select field1
,field2
,field3
,field4
,count (*)
from foo
group by field1
,field2
,field3
,field4
having count (*) > 1
然后,您可以根据查询结果重新加入原始表格。
答案 1 :(得分:3)
一种方法是使用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,但如果没有实际输出,您很难告诉您如何解决这个问题。
答案 2 :(得分:0)
SELECT *
FROM [TableName]
WHERE ID IN(SELECT MIN(ID)
FROM [TableName]
GROUP BY CONCAT(field1, field2, field3, field4))
这将返回id的1&的完整行。 3