我有桌子人(id,iin,名字,完成)和桌子err_person(id,iin,姓氏,姓名)。我如何在'iin'字段中找到重复值。如果存在,请复制到err_person表并为这些行设置标志person.done = 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
字段。这里嵌套查询的问题在于您正在更新您正在尝试查看的表,因此使用查看子查询的更新查询的简单工作将失败 - 因为两者都基于人员表。临时表可能是更好的选择。