【问题标题】:select whitout empty rows in postgresql在postgresql中选择没有空行
【发布时间】:2016-04-01 09:46:51
【问题描述】:

我在 postgresql 中有一个有趣的问题。

select sum(value1) as v1,
   sum(value2) as v2,
   sum(value3) as v3,
   sum(value4) as v4,
   sum(value5) as v5,
   ...
from (select * from test limit 0)x;

结果:

  v1 |  v2 |  v3 |  v4 |  v5 |  ...
-----+-----+-----+-----+-----+--...
     |     |     |     |     |  ...
(1 row)

预期:(0 行)。

真相:(1 行)。

我不想得到空行。 我怎样才能得到这个案例的正确结果。 谢谢。

【问题讨论】:

  • 查询将总是返回一个空行,因为limit 0 表示“根本没有行”。所以如果你不想要那个,那你为什么要使用limit 0 呢?查询没有意义
  • 我的意思是我的查询结果使用 sum 有一些空行。上面的查询是重现这个问题的一个案例,我们确定这里没有什么可以总结的。
  • 上述查询的预期是 0 行,而不是 1 行。

标签: postgresql-9.3


【解决方案1】:

您可以使用having 子句过滤掉空值:

select sum(id) 
from ( 
   select * 
   from test limit 0
) x
having sum(id) is not null;

【讨论】:

  • 感谢您的帮助。我正在使用这个子句,但我希望有一些更好的方法,因为我在 select 上有 20+ 个 sum 子句,而我必须有 20+ 个。
  • @ThịnhNguyễnThái:您应该在问题中包含这一重要信息。收到答案后扩大问题范围并不好
  • 是的,我注意到了。非常感谢!
猜你喜欢
  • 2023-04-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-19
  • 1970-01-01
  • 2011-12-24
  • 2023-03-30
  • 2021-10-21
  • 2015-05-05
相关资源
最近更新 更多