我似乎永远不记得这个查询!
我想删除table1中的所有行,其ID与Table2中的相同.
所以:
DELETE table1 t1
WHERE t1.ID = t2.ID
Run Code Online (Sandbox Code Playgroud)
我知道我可以做一个WHERE ID IN(SELECT ID FROM table2)但是如果可能的话我想用JOIN做这个查询.
HLG*_*GEM 77
DELETE t1
FROM Table1 t1
JOIN Table2 t2 ON t1.ID = t2.ID;
Run Code Online (Sandbox Code Playgroud)
我总是在delete语句中使用别名,因为它可以防止意外
DELETE Table1
Run Code Online (Sandbox Code Playgroud)
在运行之前未能突出显示整个查询时导致的.
Ste*_*esa 74
DELETE Table1
FROM Table1
INNER JOIN Table2 ON Table1.ID = Table2.ID
Run Code Online (Sandbox Code Playgroud)
Căt*_*tiș 33
ANSI SQL中没有解决方案在删除AFAIK中使用连接.
DELETE FROM Table1
WHERE Table1.id IN (SELECT Table2.id FROM Table2)
Run Code Online (Sandbox Code Playgroud)
稍后编辑
其他解决方案(有时表现更快):
DELETE FROM Table1
WHERE EXISTS( SELECT 1 FROM Table2 Where Table1.id = Table2.id)
Run Code Online (Sandbox Code Playgroud)
Ves*_*nto 16
PostgreSQL的实现将是:
DELETE FROM t1
USING t2
WHERE t1.id = t2.id;
Run Code Online (Sandbox Code Playgroud)
尝试这个:
DELETE Table1
FROM Table1 t1, Table2 t2
WHERE t1.ID = t2.ID;
Run Code Online (Sandbox Code Playgroud)
或者
DELETE Table1
FROM Table1 t1 INNER JOIN Table2 t2 ON t1.ID = t2.ID;
Run Code Online (Sandbox Code Playgroud)
我认为如果你尝试这样做,你可能会获得更多的性能
DELETE FROM Table1
WHERE EXISTS (
SELECT 1
FROM Table2
WHERE Table1.ID = Table2.ID
)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
161299 次 |
| 最近记录: |