如何在mysql的case语句中使用比较运算符

use*_*396 7 mysql case

这是我的表数据....

id  days
-----------
1   10
    20
3   30
4   25
5   5
Run Code Online (Sandbox Code Playgroud)

我想要结果

id  days    resultcolumn
1    10   less than 10
2    20   less than 20
3    30   less than 30
4    25   less than 30
5    5    less than 10
Run Code Online (Sandbox Code Playgroud)

我用过查询

SELECT id,days,
  CASE days 
    WHEN days<=10 THEN 'less than 10'
    WHEN days<=20 THEN 'less than 20'
    WHEN days<=30 THEN 'less than 30'
  END AS 'days2'
FROM calender
Run Code Online (Sandbox Code Playgroud)

但我得到了结果数据

id  days    resultcolumn
1   10    {null}
2    20   {null}
3    30   {null}
4    25   {null}
5    5    {null}
Run Code Online (Sandbox Code Playgroud)

如何在mysql中使用case语句获取原始结果?

小智 9

试试这个:

SELECT
      id,
      days,
      CASE WHEN days<=10 THEN 'less than 10'
           WHEN days<=20 THEN 'less than 20'
           WHEN days<=30 THEN 'less than 30' END AS 'days2'
    FROM calender
Run Code Online (Sandbox Code Playgroud)


Shi*_*dim 3

你可以在没有构造的情况下做到这一点CASE ... WHEN。只需使用简单的数学即可。

SELECT *, 
    CONCAT('less than ', CEIL(`days`/10)*10) AS `resultcolumn` 
FROM `Table1`
Run Code Online (Sandbox Code Playgroud)

sqlfiddle

这可以防止分支预测失败。因此,对于大数据集来说,速度会更快。