SQL Query删除NOT IN查询的结果

时间:2011-09-15 19:28:45

标签: sql

我有一个工作的mysql查询,它返回未在类中注册的所有人。 SQL是:

SELECT * FROM person 
LEFT JOIN attendance 
ON ( person.id = attendance.pid ) 
WHERE (attendance.pid IS NULL
)

现在,我想删除该结果中的每个人。最好的方法是什么?我尝试将“SELECT *”更改为“DELETE”,这给了我一个语法错误。有什么想法吗?

3 个答案:

答案 0 :(得分:5)

假设你试图删除没有出勤记录的所有人:

 DELETE FROM person WHERE id NOT IN (SELECT pid FROM attendance)

答案 1 :(得分:1)

尝试将其更改为

DELETE person
FROM person 
LEFT JOIN attendance 
ON ( person.id = attendance.pid ) 
WHERE (attendance.pid IS NULL
)

答案 2 :(得分:0)

这取决于引擎。 在PL / SQL或其他可能是:

DELETE FROM person where person.id not in(
   SELECT a.pid FROM attendance a
)

[未经测试]