【问题标题】:How to short a sql case query that uses between如何缩短使用之间的 sql 案例查询
【发布时间】:2021-02-22 17:30:34
【问题描述】:

您好,有这个 sql 查询:

SELECT CASE
   WHEN money BETWEEN 0 and 1000 THEN '1000'
   WHEN money BETWEEN 1000 and 2000 THEN '2000'
   WHEN money BETWEEN 2000 and 3000 THEN '3000'
   .
   .
   .
   .
   .
   WHEN money BETWEEN 19000 and 20000 THEN '20000'

from bank;

如何缩短此查询,以免使用大量 case 语句?

【问题讨论】:

    标签: mysql sql case


    【解决方案1】:

    您可以尝试使用 mod 从您的值中减去余数 t 除以 1000

    SELECT money - MOD( money , 1000 )
    FROM bank;
    

    或者按照@DM的建议,您也可以使用

    FLOOR((money + 999) / 1000) * 1000
    

    区别应该是一样的..两者都涉及功能..但是有 nit where 条件所以这与索引没有对比

    【讨论】:

    • 或者,FLOOR((money + 999) / 1000) * 1000。我不确定性能差异。
    • @DM .. 我已经用我对性能的一些看法更新了答案
    【解决方案2】:

    我建议使用以下表达式:

    ceiling(money / 1000)
    

    唯一需要注意的是0 进入了自己的组。对我来说,这似乎是一个功能。但如果你不同意,你可以使用case 表达式或神秘的算术:

    ceiling((money - (money = 0)) / 1000)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-06-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-10
      相关资源
      最近更新 更多