Sql 选择多个类别中仅属于一个类别的行
假设这张桌子是彩色的 身份证件 来源 1. 红色 1. 绿色 1. 橙色 2. 红色 2. 红色 3. 黑色 3. 绿色 4. 红色 5. 绿色Sql 选择多个类别中仅属于一个类别的行,sql,postgresql,Sql,Postgresql,假设这张桌子是彩色的 身份证件 来源 1. 红色 1. 绿色 1. 橙色 2. 红色 2. 红色 3. 黑色 3. 绿色 4. 红色 5. 绿色 我设法找到了一个问题,但它似乎太复杂和不切实际了: 颜色如图所示 -这是每个id的不同源的列表 选择id,源 从颜色 按id分组,源 ,只有 -这里我检查哪个id只有一个不同的源 选择id,将*计为n_源 从颜色 按id分组 计数*=1的 -在那些只有一个源的id中,我只把只有红色的id作为源 选择id 从颜色 其中id在“仅从红色中选择id” 和源=
我设法找到了一个问题,但它似乎太复杂和不切实际了: 颜色如图所示 -这是每个id的不同源的列表 选择id,源 从颜色 按id分组,源 ,只有 -这里我检查哪个id只有一个不同的源 选择id,将*计为n_源 从颜色 按id分组 计数*=1的 -在那些只有一个源的id中,我只把只有红色的id作为源 选择id 从颜色 其中id在“仅从红色中选择id” 和源='red' 也许有人有更好的想法?使用聚合:
select id
from t
group by id
having count(*) filter (where color = 'red') = count(*);
天哪!这太棒了!非常感谢。