【问题标题】:Using Sum in If in Mysql在 Mysql 中的 If 中使用 Sum
【发布时间】:2026-02-08 23:35:01
【问题描述】:

我想选择 my_field 的值的总和。 my_field 的单位是秒。我不想超过 24 小时,所以当超过 24 小时时,我希望它选择 24*60*60 = 86400。

SELECT IF(SUM(my_field) > 86400, 86400, SUM(my_field))
...

此解决方案似乎不起作用。我还能做什么?

【问题讨论】:

    标签: mysql sql select sum


    【解决方案1】:

    使用least 会容易得多:

    SELECT LEAST(SUM(my_field), 86400)
    FROM   my_table
    

    【讨论】:

    • 不是最小的......(或者是最小的?)
    • 感谢您的回答,这给了我这个想法。
    • @jarlh 是的,那是暂时的注意力不集中。确实 - least
    • @StuartLC 是的 - 没有集中注意力。查看最新编辑。
    • @tolga 请注意,如上述评论中所述,它应该是least,而不是greatest(已编辑以更新答案)。
    【解决方案2】:

    另一种选择是使用CASE 类似的表达式

    SELECT CASE WHEN SUM(my_field) > 86400 THEN 86400 ELSE SUM(my_field) END
    FROM table1
    

    【讨论】:

    • 谢谢,这个答案也很有用。