【发布时间】:2017-05-02 06:39:55
【问题描述】:
我有一些 Postgres SELECT 查询,这些查询是根据通过 PHP 的表单输入拼凑而成的。其中之一是一个 SELECT 查询,该查询旨在检索每个字段中的最小值(我也有一个查找最大值)。
例如对于最小值:
SELECT
MIN(col1) "Min_col1"
MIN(col2) "Min_col2"
MIN(col3) "Min_col3"
FROM table
不幸的是,我的表中有很多 NULL 值,分布在所有字段中。为了解决这个问题,我在表单中添加了复选框,允许用户选择是否应在此查询中包含/排除 NULL 值。
例如,如果用户想为所有列包含 NULL 值:
SELECT
MIN(col1) "Min_col1"
MIN(col2) "Min_col2"
MIN(col3) "Min_col3"
FROM table
WHERE
(col1 IS NULL) AND
(col2 IS NULL) AND
(col3 IS NULL)
但是,由于每个字段至少有一个 NULL 值,因此上述查询将返回所有 NULL。
我想要的是能够检索每个字段的 MIN,同时包括/排除其他字段的 NULL 值。例如MIN(col1) 同时包括/排除 col2、col2 和 col3 等的 NULLS。
解决这个问题的最简单方法是什么?请记住,查询是通过 PHP 从表单输入组合在一起的,因此希望尽可能保持模块化...
【问题讨论】:
-
你能检查一下吗 - stackoverflow.com/questions/12009817/…
-
选择 min('Include' = {parameter} 的情况,然后 col1 为空的情况,然后 0 else col1 end else col1 end ),min('Include' = {parameter} 的情况,然后的情况col2 为 null 然后 0 else col2 end else col2 end) from your_table 其中 {parameter} 值为“包含”或“排除”。使用您的复选框参数设置这些值。让我知道它是否有效。
标签: php postgresql