基于另一个表删除表中的所有行
我似乎无法记住这个查询!
我想删除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