首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >选择最大字段值或零值

选择最大字段值或零值
EN

Stack Overflow用户
提问于 2014-11-05 07:36:28
回答 3查看 4.3K关注 0票数 2

我有表user_groups,如果任何user_group实体在time字段中有0,则需要选择字段time0的最大0值。

就像这样:

代码语言:javascript
运行
复制
SELECT time FROM user_groups
WHERE
IF (time == 0) THEN time = 0
ELSE MAX(time)

我需要多平台解决方案。

更新:

我在用mysql

在这种情况下:

代码语言:javascript
运行
复制
id | time |
1  |  5   |
2  |  6   |

我在等6

在这种情况下:

代码语言:javascript
运行
复制
id | time |
3  |  5   |
4  |  6   |
5  |  0   |

我在等0

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-11-05 09:27:27

该解决方案使用abs函数也涵盖负时间情况:

代码语言:javascript
运行
复制
SELECT case when min(abs(time)) = 0 then 0 else max(time) end FROM user_groups;
票数 2
EN

Stack Overflow用户

发布于 2014-11-05 07:41:51

用案例怎么样?

代码语言:javascript
运行
复制
SELECT case when min(time) = 0 then 0 else max(time) end FROM user_groups;

或者,如果时间可以<0,但应该只考虑时间0或更长的时间,那么添加where子句会有所帮助。

代码语言:javascript
运行
复制
SELECT case when min(time) = 0 then 0 else max(time) end FROM user_groups where time >= 0;
票数 4
EN

Stack Overflow用户

发布于 2014-11-05 07:46:31

检查是否至少有一个记录的时间是零。根据结果显示0或最大值(时间)

代码语言:javascript
运行
复制
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知道一个布尔数据类型,其中TRUE =1和FALSE = 0。因此,您可以将上面的内容写成:

代码语言:javascript
运行
复制
select 
  case when max(time = 0) then 0 else max(time) end
from user_groups;
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26751882

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档