如果其余表与参考表相关,则可以删除多个表。
TABLE1 | TABLE2 | TABLE3
id username | id username | id username
1 userA | 1 userA | 1 userA
2 userB | 2 userB | 2 userB
-
DELETE T1, T2, T3 FROM TABLE1 T1
LEFT JOIN TABLE2 T2 ON T2.username='$user'
LEFT JOIN TABLE3 T3 ON T3.username='$user'
WHERE T1.username='$user'
现在我不知道如何处理参考表(T1上面的代码是参考)与另一个没有关系的情况。
TABLE1 | TABLE2 | TABLE3
id username | id username | id username
1 userC | 1 userA | 1 userA
2 userD | 2 userB | 2 userB
示例:
DELETE FROM TABLE1, TABLE2, TABLE3 WHERE username='userA'
我是否必须逐个删除它们,或者是否存在现有的MYSQL查询?
答案 0 :(得分:1)
您的示例基本上生成笛卡尔积。在单个查询中从多个表中删除涉及具有关系的表。由于表之间没有关系,因此您必须逐个删除它们。
此外,您的示例语句必须使用表名限定列名。
DELETE FROM TABLE1,TABLE2,TABLE3 WHERE username ='userA'
但我们不知道哪个表具有该值。如果任何表不符合条件,则将where子句与 AND 条件放在一起将不会从任何表中删除记录
(TABLE1.username='userA' AND TABLE2.username='userA' AND TABLE3.username='userA')
类似地, OR 条件将删除所有表中的数据,如果其中任何一个表具有与条件匹配的记录。