gpt4 book ai didi

POSTGRESQL:在每个 GROUP BY 中使用 EXCEPT

转载 作者:行者123 更新时间:2023-11-29 14:30:32 24 4
gpt4 key购买 nike

我有以下表格:

CREATE TABLE rqrd  
(p_id INTEGER,
co_id INTEGER);

INSERT INTO rqrd VALUES
(1, 100),
(1, 800),
(2, 100),
(2, 800),
(3, 100),
(3, 800),
(3, 900);



CREATE TABLE completed
(p_id INTEGER,
co_id INTEGER);

INSERT INTO completed VALUES
(1, 100),
(1, 800),
(2, 100),
(3, 100),
(3, 800),
(3, 900);

如果 rqrd 中的每个 p_id 组中没有更多行对应于该 p_id,我如何从 completed 返回行(够糊涂了!!)我的意思是我想要:

(1, 100), 
(1, 800)

(3, 100), 
(3, 800),
(3, 900);

from completed 显示在结果中,因为 rqrd 中不再有 p_id = 1 或 3 的行。但是 (2, 100) 不会产生结果,因为我们有:

(2, 800),

也在 rqrd 表中。

最佳答案

不确定我是否完全理解这个问题,但也许是这样的:

select *
from completed
where p_id not in (

select r.p_id
from rqrd r
left join completed c on (c.p_id = r.p_id and c.co_id = r.co_id)
where c.p_id is null

)
;

子查询查看所有 rqrd 记录 p_id, co_id 并查找 completed 中不存在的此类对。如果这样的组合不存在,则 p_id 无效,并且所有此类 p_id 记录都从 completed 查询中过滤掉。

关于POSTGRESQL:在每个 GROUP BY 中使用 EXCEPT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52451994/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com