oracle join table delete, common join table delete SQL

在Oracle数据库中,可以使用DELETE语句删除多个表中的数据,也可以使用INNER JOINLEFT JOINRIGHT JOIN等连接操作来删除多个表中的数据。
下面是一些示例:

删除两个表中相同的记录
DELETE FROM table1
WHERE EXISTS (SELECT 1 FROM table2 WHERE table1.id = table2.id);

删除两个表中不同的记录
DELETE FROM table1
WHERE NOT EXISTS (SELECT 1 FROM table2 WHERE table1.id = table2.id);

删除两个表中相同的记录,但保留一个
DELETE FROM table1
WHERE EXISTS (SELECT 1 FROM table2 WHERE table1.id = table2.id AND ROWNUM = 1);

使用INNER JOIN删除两个表中相同的记录
DELETE FROM table1
WHERE id IN (SELECT t1.id FROM table1 t1 INNER JOIN table2 t2 ON t1.id = t2.id);

使用LEFT JOIN删除table1中没有匹配到table2的记录
DELETE FROM table1
WHERE NOT EXISTS (SELECT 1 FROM table2 WHERE table1.id = table2.id)
AND ROWNUM = 1;

使用RIGHT JOIN删除table2中没有匹配到table1的记录
DELETE FROM table2
WHERE NOT EXISTS (SELECT 1 FROM table1 WHERE table1.id = table2.id)
AND ROWNUM = 1;

Guess you like

Origin blog.csdn.net/qq_45699990/article/details/129732174