说我有类似的东西:
select id from users where age > 21;
这会产生
12
13
14
15
现在我希望查询不仅可以找到这些ID,还可以对它们执行某些操作,例如:
(for each id found): delete from people where user_id = <the id found>;
我该怎么写?
答案 0 :(得分:3)
您只需使用子查询:
DELETE FROM people WHERE user_id IN (SELECT id FROM users WHERE age > 21)
中的更多信息
答案 1 :(得分:0)
除了使用子查询的可能性之外,在大多数情况下,您还可以使用简单的JOIN
,具体取决于大多数SQL实现中关系的基数。不幸的是,我不认为PostgreSQL在其JOIN
语法中允许DELETE
s,但它们确实有USING
子句:
DELETE FROM People USING Users
WHERE
People.user_id = Users.id AND
Users.age > 21;
如果该语法不适合您,请告诉我,我会调整我的答案。