我正在尝试查找表中包含多个字段中重复数据的所有记录,并返回这些重复记录的所有字段。我在这个网站上研究过这个问题并发现了类似的问题,但似乎没有一个问题可以解决我的问题。
例如,这些将是重复记录:
first_name last_name状态
Bob Jones CA
Bob Jones CA
虽然这些不是:
first_name last_name状态
Bob Jones CA
Bob Jones CO
这些也不是:
first_name last_name状态
Bob Jones CA
Bob Smith CA
这些也不是:
first_name last_name状态
Bob Jones CA
Jim Jones CA
如果我展示我尝试过的MySQL语句可能会更容易:
SELECT * FROM table_1 WHERE gy> = 2 AND arc =''AND
first_name IN(SELECT first_name FROM table_1 GROUP BY first_name HAVING count(first_name)> 1)AND
last_name IN(SELECT last_name FROM table_1 GROUP BY last_name HAVING count(last_name)> 1)AND
state IN(SELECT state FROM table_1 GROUP BY state HAVING count(state)> 1)
此语句似乎返回表中符合前两个条件的所有记录(gy> = 2 AND arc ='')并忽略最后三个,我不明白。
是否有人建议以更成功的方式返回所有三个first_name,last_name和state字段中具有重复值的记录的所有字段?
答案 0 :(得分:1)
您可以尝试这样的事情:
SELECT First_name, Last_name, State
FROM Table_1
GROUP BY First_name, Last_name, State
HAVING COUNT(1) > 1
这只会在所有三个字段上返回重复项。那是你在找什么?
编辑:
要获取副本的每个记录,可以使用上面的子查询来选择重复项:
SELECT *
FROM dbo.SO2 a
WHERE EXISTS (
SELECT First_name, Last_name, State
FROM dbo.SO2 b
GROUP BY First_name, Last_name, State
HAVING COUNT(1) > 1
AND a.First_name = b.First_name
AND a.Last_name = b.Last_name
AND a.State = b.State)