Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/10.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
Postgresql 如何只选择那些没有';t在任何产品中的状态=真_Postgresql - Fatal编程技术网

Postgresql 如何只选择那些没有';t在任何产品中的状态=真

Postgresql 如何只选择那些没有';t在任何产品中的状态=真,postgresql,Postgresql,疑问是 select brand from products where status = false and brand not in ( select brand from products where status = true group by brand ) group by brand; 基本上,我只想选择那些在任何产品中都没有status=true的品牌 我想优化上面的查询您可以使用CASE语句将布尔值转换为位,然后使用MAX对其执行以下操作: SELECT br

疑问是

select brand
from products
where status = false
and brand not in (
  select brand
  from products
  where status = true
  group by brand
)
group by brand;
基本上,我只想选择那些在任何产品中都没有status=true的品牌


我想优化上面的查询

您可以使用
CASE
语句将布尔值转换为位,然后使用
MAX
对其执行以下操作:

SELECT brand
FROM products
GROUP BY brand
HAVING MAX(CASE WHEN status = TRUE THEN 1 ELSE 0 END) = 1

您可以使用
CASE
语句将布尔值转换为位,然后在该语句上使用
MAX

SELECT brand
FROM products
GROUP BY brand
HAVING MAX(CASE WHEN status = TRUE THEN 1 ELSE 0 END) = 1

使用布尔聚合函数:


使用布尔聚合函数:


+1.我正在寻找这个函数,以前没有使用过,但我想PostgreSQL会有它。有趣的是,您可以使用<代码>不布尔(或)代码> />代码> BooLoad和()/Cube >,结果相同,但OP可能想考虑列<代码>状态>代码>是否可空,并相应地调整。或者可以使用
bool\u和(非状态)
+1。我正在寻找这个函数,以前没有使用过,但我想PostgreSQL会有它。有趣的是,您可以使用<代码>不布尔(或)代码> />代码> BooLoad和()/Cube >,结果相同,但OP可能想考虑列<代码>状态>代码>是否可空,并相应地调整。或者可以使用
bool\u和(非状态)