数据库
首页 > 数据库> > SQL_DML_Usage of Multiple-table Delete(多表删除的用法)

SQL_DML_Usage of Multiple-table Delete(多表删除的用法)

作者:互联网

学习参考

使用方法

Multiple-Table Syntax(多表语法)

Multi-Table Deletes(多表删除)

你可以在一个DELETE语句中指定多个表,根据WHERE子句中的条件,从一个或多个表中删除记录。你不能在多表DELETE中使用 ORDER BY 或 LIMIT。table_references子句列出了参与连接的表。

这些语句在搜索要删除的记录时使用所有三个表,但是只从表t1和t2中删除匹配的记录。

前面的例子使用了INNER JOIN,但是多表DELETE语句可以使用SELECT语句中允许的其他类型的连接,例如LEFT JOIN。例如,要删除存在于t1中但在t2中没有匹配的记录,可以使用LEFT JOIN:DELETE t1 FROM t1 LEFT JOIN t2 ON t1.id=t2.id WHERE t2.id IS NULL;

注意!!!
如果你为一个表声明了一个别名,你在引用该表时必须使用该别名。
DELETE t1 FROM test AS t1, test2 WHERE ...

多表DELETE中的表别名应该只在语句的table_references部分声明。在其他地方,允许引用别名,但不允许声明别名。

正确:

DELETE a1, a2 FROM t1 AS a1 INNER JOIN t2 AS a2
WHERE a1.id=a2.id;

DELETE FROM a1, a2 USING t1 AS a1 INNER JOIN t2 AS a2
WHERE a1.id=a2.id;

错误:

DELETE t1 AS a1, t2 AS a2 FROM t1 INNER JOIN t2
WHERE a1.id=a2.id;

DELETE FROM t1 AS a1, t2 AS a2 USING t1 INNER JOIN t2
WHERE a1.id=a2.id;

标签:JOIN,Multiple,t2,DML,t1,多表,id,DELETE
来源: https://www.cnblogs.com/BodhiLeaf/p/16414941.html