如何使用SQL查找重复的字段?

时间:2017-12-28 15:53:12

标签: mysql sql

我有桌子人(id,iin,名字,完成)和桌子err_person(id,iin,姓氏,姓名)。我如何在'iin'字段中找到重复值。如果存在,请复制到err_person表并为这些行设置标志person.done = 1。

person table

desired results: err_person

1 个答案:

答案 0 :(得分:0)

在字段中查找重复值:

SELECT iin
FROM person
GROUP BY iin
HAVING COUNT(*) > 1

您可能希望嵌套此查询:

SELECT * FROM person WHERE iin IN (
   SELECT iin
   FROM person
   GROUP BY iin
   HAVING COUNT(*) > 1)

所以,要将其插入到err_person表中,您可以执行以下操作(注意person表没有surname字段):

INSERT INTO err_person (id, iin, name)
    SELECT id, iin, name FROM person WHERE iin IN (
        SELECT iin
        FROM person
        GROUP BY iin
        HAVING COUNT(*) > 1)

最后,必须运行单独的查询来更改done字段。这里嵌套查询的问题在于您正在更新您正在尝试查看的表,因此使用查看子查询的更新查询的简单工作将失败 - 因为两者都基于人员表。临时表可能是更好的选择。