首页 文章

MySQL找到重复记录

提问于
浏览
0

我正在尝试在表中找到在多个字段中具有重复数据的所有记录,并返回这些重复记录的所有字段 . 我在这个网站上研究了这个问题并发现了类似的问题,但似乎没有一个问题可以解决我的问题 .

例如,这些将是重复记录:

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 state 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状态IN(SELECT状态FROM table_1 GROUP BY状态HAVING count(state)> 1)

该语句似乎返回表中满足前两个条件的每个记录(gy> = 2 AND arc ='')并忽略最后三个,我不明白 .

有没有人建议以更成功的方式返回所有三个first_name,last_name和state字段中具有重复值的记录的所有字段?

1 回答

  • 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)
    

相关问题