Mysql 如何使用SQL查找重复字段?
我有表personid,iin,name,done和表err_personid,iin,姓氏,name。如何在“iin”字段中找到重复值。如果存在,则复制到err_person表,并为这些行设置标志person.done=1Mysql 如何使用SQL查找重复字段?,mysql,sql,Mysql,Sql,我有表personid,iin,name,done和表err_personid,iin,姓氏,name。如何在“iin”字段中找到重复值。如果存在,则复制到err_person表,并为这些行设置标志person.done=1 要在字段中查找重复值,请执行以下操作: SELECT iin FROM person GROUP BY iin HAVING COUNT(*) > 1 您可能希望嵌套此查询: SELECT * FROM person WHERE iin IN ( SELECT
要在字段中查找重复值,请执行以下操作:
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表没有姓氏字段:
最后,必须运行一个单独的查询来更改done字段。这里嵌套查询的问题是,您正在更新一个试图查看的表,因此使用查看子查询的更新查询的简单操作将失败,因为两者都基于person表。在这里,临时表可能是更好的选择。我不确定重复字段是什么意思。通常,人们对这些字段中的重复值感兴趣?请你澄清一下你的问题好吗?是的,我指的是“iin”字段中的重复值。我更正了问题。@JTAG。示例数据和期望的结果将非常有帮助。如何将数据复制到err_person表,然后设置person.done=1的标志。我想使用Mysql,而不使用服务器
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)