我有一个工作的mysql查询,它返回未在类中注册的所有人。 SQL是:
SELECT * FROM person
LEFT JOIN attendance
ON ( person.id = attendance.pid )
WHERE (attendance.pid IS NULL
)
现在,我想删除该结果中的每个人。最好的方法是什么?我尝试将“SELECT *”更改为“DELETE”,这给了我一个语法错误。有什么想法吗?
答案 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
)
[未经测试]