Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 选择多个类别中仅属于一个类别的行_Sql_Postgresql - Fatal编程技术网

Sql 选择多个类别中仅属于一个类别的行

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” 和源=

假设这张桌子是彩色的

身份证件 来源 1. 红色 1. 绿色 1. 橙色 2. 红色 2. 红色 3. 黑色 3. 绿色 4. 红色 5. 绿色
我设法找到了一个问题,但它似乎太复杂和不切实际了:

颜色如图所示 -这是每个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(*);

天哪!这太棒了!非常感谢。