基于另一个表删除表中的所有行

我似乎无法记住这个查询!

我想删除table1中ID与Table2中相同的所有行。

所以:

DELETE table1 t1
 WHERE t1.ID = t2.ID

我知道我可以做一个WHERE ID IN(SELECT ID FROM table2),但如果可能的话,我想用JOIN做这个查询。


DELETE Table1
FROM Table1
INNER JOIN Table2 ON Table1.ID = Table2.ID

DELETE t1 
FROM Table1 t1
JOIN Table2 t2 ON t1.ID = t2.ID;

我总是在删除语句中使用别名,因为它可以防止意外

DELETE Table1 

在运行之前无法突出显示整个查询时导致的。


ANSI SQL中没有解决方法在删除AFAIK中使用联接。

DELETE FROM Table1
WHERE Table1.id IN (SELECT Table2.id FROM Table2)

稍后编辑

其他解决方案(有时表现更快):

DELETE FROM Table1
WHERE EXISTS( SELECT 1 FROM Table2 Where Table1.id = Table2.id)
链接地址: http://www.djcxy.com/p/71099.html

上一篇: Delete all rows in a table based on another table

下一篇: compressor path issue