我在下面尝试过,但没有成功,因为table_B是空的,所以失败了。因此,即使table_B为空,我也希望至少从table_A中删除该记录。
仅供参考: 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=?");
发布于 2021-01-14 10:49:47
你的语法不太正确,应该是:
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_B
中的相应id
时从table_A
中删除条目,则可以将key
定义为table_A(id)
的外键并指定ON DELETE CASCADE
ALTER TABLE table_B ADD FOREIGN KEY (`key`) REFERENCES table_A(id) ON DELETE CASCADE
然后,您可以简单地从table_A
中删除,table_B
中的相应行(如果有)将自动删除:
DELETE
FROM table_A
WHERE id = ?
https://stackoverflow.com/questions/65712621
复制相似问题