SQL 选择 team_id 所在的所有项目(1 和 2 和 3 和 4 以及 .. 列表中的其余值)

标签 sql postgresql

我尝试选择 team id = list of values 的项目; 例如:值列表是 (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)

最佳答案

我认为您还需要 group byhaving:

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)

关于SQL 选择 team_id 所在的所有项目(1 和 2 和 3 和 4 以及 .. 列表中的其余值),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51652229/

相关文章:

sql - Oracle - 对结果集的每一行执行操作

mysql - Zend 2 子查询列

postgresql - 从一个选择中插入具有不同值的多行

SQL 按类型和位置唯一分组

c - 如何在 Postgres 的 C 语言函数中返回位(n)或位变化(n)字段?

sql - 如何多次使用特定列连接两个表

sql - 如何使用 Pandas 中的游标执行与数据框列值的逻辑比较

SQL繁琐添加数组作为参数

mysql - PostgreSQL 和 MySQL 全文搜索

sql - 按顺序对所有行进行编号