[英]How to delete from table A and table B (if exists) in the same query?
我在下面尝试过但没有成功,它只是失败了,因为 table_B 是空的。 所以我想至少从 table_A 中删除记录,即使 table_B 是空的。
仅供参考:table_A 记录始终存在,因此无需搜索是否存在。
$sql_remove_rfid = $dbi->prepare("
DELETE
FROM table_A
, table_B
LEFT
JOIN table_B
ON table_A.id = table_B.key
WHERE table_A.id=?");
你的语法不太正确,应该是:
DELETE A, B
FROM table_A A
LEFT JOIN table_B B ON A.id = B.key
WHERE A.id=?
请注意,通常最好避免使用 MySQL 保留字 ( key
) 作为列名。
另请注意,如果key
是从table_B
到table_A
的外键,并且您总是希望在删除table_A
中的相应id
时从table_B
中删除条目,则可以将key
定义为table_A(id)
的外键并指定ON DELETE CASCADE
:
ALTER TABLE table_B ADD FOREIGN KEY (`key`) REFERENCES table_A(id) ON DELETE CASCADE
然后你可以简单地从table_B
中删除, table_A
中的相应行(如果有的话)将自动删除:
DELETE
FROM table_A
WHERE id = ?
您似乎希望根据某个 ID 从 TABLEA 中删除数据,而不管该 ID 是否存在于 TABLEB 中。 因此为什么 JOIN 条件。 有可能
$sql_remove_rfid = $dbi->prepare("DELETE FROM
table_A
WHERE table_A.id=?");
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.