【问题标题】:searching not null condition in multiple columns with query postgresql使用查询 postgresql 在多列中搜索非空条件
【发布时间】:2021-08-22 03:34:38
【问题描述】:

我想统计在 field1、field2、field3 和 field4 中有多少没有日期的文档。我创建了如下查询,但它看起来并不好。

select 
   count(doc)
where true
   and field1 is not null
   and field2 is not null
   and field3 is not null
   and field4 is not null

如何为多个列应用一个过滤器?

提前致谢。

【问题讨论】:

    标签: postgresql filter multiple-columns


    【解决方案1】:

    您当前的查询没有任何问题,这可能是我在这里使用的。但是,您可以在这里使用COALESCE 技巧:

    SELECT COUNT(*)
    FROM yourTable
    WHERE COALESCE(field1, field2, field3, field4) IS NOT NULL;
    

    这是有效的,因为对于至少有四个字段之一分配给非 NULL 日期的任何记录,IS NOT NULL 检查将失败。只有四个字段均为NULL 的记录才会匹配。

    请注意,这会计算至少有一个非NULL 字段的记录。如果您想计算所有四个字段均为NULL 的记录,则使用:

    SELECT COUNT(*)
    FROM yourTable
    WHERE COALESCE(field1, field2, field3, field4) IS NULL;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多