Postgres的;查询以处理找到的一组ID

时间:2016-03-10 20:41:02

标签: sql postgresql

说我有类似的东西:

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>;

我该怎么写?

2 个答案:

答案 0 :(得分:3)

您只需使用子查询:

DELETE FROM people WHERE user_id IN (SELECT id FROM users WHERE age > 21)

Postgresql documentation about subqueries

中的更多信息

答案 1 :(得分:0)

除了使用子查询的可能性之外,在大多数情况下,您还可以使用简单的JOIN,具体取决于大多数SQL实现中关系的基数。不幸的是,我不认为PostgreSQL在其JOIN语法中允许DELETE s,但它们确实有USING子句:

DELETE FROM People USING Users
WHERE
    People.user_id = Users.id AND
    Users.age > 21;

如果该语法不适合您,请告诉我,我会调整我的答案。