更新存在fk约束问题的所有行

时间:2014-07-15 00:01:19

标签: mysql sql

我正在将表迁移到新数据库中。存在fk约束问题,因为在2个表之间从未设置过关系(tbl_contacts.contact_ID和tbl_communications.contact_ID,即fk)。我可以用

看到所有行
SELECT * FROM Farm.tbl_communication as S
LEFT JOIN Farm.tbl_contacts ON S.contact_ID = Farm.tbl_contacts.contact_ID
WHERE Farm.tbl_contacts.contact_ID IS NULL

我只是想删除这些行,我尝试了这个:

    DELETE FROM Farm.tbl_communication 
    WHERE Farm.tbl_communication.contact_ID (SELECT contact_ID
    FROM ( SELECT * FROM Farm.tbl_communication) as S
    LEFT JOIN Farm.tbl_contacts ON S.contact_ID = Farm.tbl_contacts.contact_ID
    WHERE Farm.tbl_contacts.contact_ID IS NULL)

哪个不起作用。我现在已经想好了,我将创建一个全能的联系人,所以我将使用新的catch-all id更新所有communications.contact_ID。问题是我不知道如何去做。语法是什么?

1 个答案:

答案 0 :(得分:1)

DELETE FROM Farm.tbl_communication
WHERE NOT EXISTS (
    SELECT 1
    FROM  Farm.tbl_contacts
    WHERE Farm.tbl_contacts.contact_ID = Farm.tbl_communication.contact_ID);

...或者您可以通过将DELETE位更改为UPDATE来更新它们。