Bor*_*jaX 4 sql postgresql subquery sql-delete
我必须删除一些与使用子查询计算的两列相匹配的记录。
我可以用这个查询正确地看到它们:
select * from user_assignments as ua,
(
select user_assignments.user_id as uid,
job_selection as jid
from user_assignments
join job_selections on job_id = jobs.id
join data on job_selections.data_id = data.id
where data.my_column IS NULL
) as sq
where sq.uid = ua.user_id AND ua.job_selection_id = sq.jid;
Run Code Online (Sandbox Code Playgroud)
这有效,我看到了要删除的 7 个作业。
然而,删除并不像通过 DELETE 更改 SELECT 那样容易...
如果我做:
delete from user_assignments as ua,
(
...
) as sq
where sq.uid = ua.user_id AND sq.jid = ua.job_selection_id;
Run Code Online (Sandbox Code Playgroud)
我得到:
ERROR: syntax error at or near ","
Run Code Online (Sandbox Code Playgroud)
我已经尝试了很多种组合,但我无法让它发挥作用。我想这一定很简单,但我在 SQL 方面是个新手。
基本上,我有一个子查询,它可以正确生成两列,我可以将它们用于 a SELECT FROM user_assignments,现在我想要DELETE FROM user_assignments我知道可以选择的记录。
任何提示将不胜感激。先感谢您。
使用in或exists:
delete from user_assignments ua
where exists (select 1
from user_assignments ua2 join
job_selections js
on ua2.job_id = js.id join
data d
on js.data_id = d.id
where d.my_column IS NULL and
ua.user_id = sq.uid and ua.job_selection_id = sq.jid
);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3441 次 |
| 最近记录: |