首页 > 解决方案 > SQL 选择 team_id 所在的所有项目(1 和 2 以及 3 和 4 以及 .. 列表中的剩余值)

问题描述

我尝试选择团队 id = 值列表的项目;例如:值列表是 (9,7,6,4,3,1),我想创建查询选择,其中包含 team_id = (9,7,6,4,3,1) 的项目;

我的尝试:

select item_id
from t_item as i join
     team as t 
     on t.item_id = i.id
where t.id in (1221, 1219, 1);

但它的工作喜欢in (1221 or 1219 or 1),但我想要in(1221 and 1219 and 1)

标签: sqlpostgresql

解决方案


我想你也group by想要having

select i.item_id
from t_item as i join
     team as t 
     on t.item_id = i.id
where t.id in (1221, 1219, 1)
group by i.item_id
having count(distinct t.id) = 3;

请注意,您不需要join

select t.item_id
from team t 
where t.id in (1221, 1219, 1)
group by t.item_id
having count(distinct t.id) = 3;

如果其中的行team是唯一的,请使用count(*)而不是count(distinct).


推荐阅读