如果其他表与引用表相关,则可以删除多个表。
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查询?
你的例子基本上产生笛卡尔积。在单个查询中从多个表中删除涉及到具有关系的表。由于表与表之间没有关系,您将不得不逐个删除它们。
您的示例语句还必须用表名限定列名。
DELETE FROM表1,表2,表3 WHERE username='userA'
但是我们不知道哪个表有这个值。如果任何表不满足条件
,则使用带有AND条件的where子句不会从任何表中删除记录。(TABLE1.username='userA' AND TABLE2.username='userA' AND TABLE3.username='userA')
同样,OR条件将删除所有表中的数据,如果其中任何一个表中有匹配条件的记录。