我有user_groups
表格,如果int
实体time
中有0
,我需要选择字段user_group
或0
的最大time
值1}}字段。
像这样:
SELECT time FROM user_groups
WHERE
IF (time == 0) THEN time = 0
ELSE MAX(time)
我需要多平台解决方案。
的更新:
我正在使用mysql
。
在这种情况下:
id | time |
1 | 5 |
2 | 6 |
我期待6
。
在这种情况下:
id | time |
3 | 5 |
4 | 6 |
5 | 0 |
我期待0
答案 0 :(得分:3)
如何使用案例
SELECT case when min(time) = 0 then 0 else max(time) end FROM user_groups;
或者如果时间可以< 0但是只应考虑时间0或更多,然后添加where子句可以帮助
SELECT case when min(time) = 0 then 0 else max(time) end FROM user_groups where time >= 0;
答案 1 :(得分:3)
检查至少一个记录的时间是否为零。根据结果显示0或最大(时间)
select
case when max(case when time = 0 then 1 else 0 end) = 1 then 0 else max(time) end
from user_groups;
编辑:您已将MySQL标记添加到您的请求中。 MySQL知道一个BOOLEAN数据类型,其中TRUE = 1且FALSE = 0.所以你可以把上面写成:
select
case when max(time = 0) then 0 else max(time) end
from user_groups;
答案 2 :(得分:2)
此解决方案使用和功能也涵盖负面时间情况:
SELECT case when min(abs(time)) = 0 then 0 else max(time) end FROM user_groups;