SQL选择日期不为空的最大列数

时间:2018-07-13 17:07:48

标签: mysql sql

我当前正在使用此查询来选择一些数据: SELECT DISTINCT a.code AS code, name, max(scen.Is3D) AS Is3D FROM locations LEFT JOIN ...scen表具有列Is3DDate的列。我只想选择日期为IS NOT NULL的项目的最大值。我尝试了max(scen.Is3D WHERE scen.Date IS NOT NULL),但是没有用。我无法在查询中的FROM之后进行任何更改,因此,如果可能的话,我需要在MAX中进行过滤。我正在使用MySQL 5.7。

2 个答案:

答案 0 :(得分:2)

您可以使用:

MAX(CASE WHEN scen.date IS NOT NULL THEN scen.Is3D END) AS Is3D

CASE的任何一个都不满足时,NULL表达式将返回WHEN,但是MAX()会忽略空值,因此它将仅返回{{ 1}}列。

答案 1 :(得分:1)

因此,如果我们在FROM之后不能进行任何更改,那么我们将无法在此找到理想的解决方案。由于您正在SELECT列出NULL值。如果我们只能修改最终输出,我们可以尝试的一件事就是这样做。

SELECT MAX(ISNULL(scen.Date,0))...

这会将所有NULL替换为0,但这将有助于准确了解您要执行的操作。为什么您如此确信查询本身无法以任何方式修改?

另一种解决方案是将整个查询放在另一个包装器中。

它看起来像:

SELECT * 
FROM ( 
[your whole query here]
) AS inner
WHERE inner.Date IS NOT NULL