Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 更新存在fk约束问题的所有行_Mysql_Sql - Fatal编程技术网

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

Mysql 更新存在fk约束问题的所有行,mysql,sql,Mysql,Sql,我正在将一个表迁移到一个新的数据库中。存在fk约束问题,因为这两个表(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_con

我正在将一个表迁移到一个新的数据库中。存在fk约束问题,因为这两个表(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)
这是行不通的。我现在想得更好了,我将创建一个全面的联系人,这样我将用新的全面的ID更新所有的通信。联系人ID。问题是我不知道该怎么做。语法是什么

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

…或者您可以通过将删除位更改为更新来更新它们。

您收到的错误消息是什么?您的问题是关于删除还是更新?问题是关于更新。删除似乎有点极端。我会将删除更改为更新,然后在最后添加
SET Farm.tbl\u communication.contact\u ID=999
?是的。您将有:
UPDATE Farm.tbl\u通信集contact\u ID=999,其中…
-但使用999时要小心。如果你有那么多联系人怎么办?也许用-1代替,或者干脆用NULL。这就成功了。谢谢你,好心的先生。对于新的联系人ID,我找到了一个必须已被删除且没有任何关联的ID,并使用了该ID。