使用CASE在MySQL 5.7上的此查询有什么问题?

时间:2019-06-28 01:57:25

标签: mysql

我正在尝试在HeidiSQl的MySQ L5.7上使用CASE,

我想使用CASE调用表,并使用间隔0、1-100和100或更大的CASE。

但这是行不通的

SELECT ventas.Ventas_Id AS ID, ventas.Ventas_Fecha AS fecha, ventas.Ventas_Neto AS neto
CASE  Ventas_Total
   WHEN ventas.Ventas_Total = 0 THEN 'C'
   WHEN ventas.Ventas_Total > 100 THEN 'S'
   WHEN ventas.Ventas_Total  < 100 THEN 'L'                       
END AS "Categoria"
FROM ventas

我收到此错误消息

  

SQL错误(1064):您的SQL语法有错误;请查看与您的MySQL服务器版本相对应的手册,以获取在'CASE ventas.Ventas_Total

附近使用的正确语法。
   WHEN ventas.Ventas_Total = 0 THEN 'C'
     

第4行

1 个答案:

答案 0 :(得分:3)

CASE表达式有两种样式,实际上您正在混合两种类型的语法。由于CASE表达式中有一个不等式,因此只能使用以下样式:

CASE WHEN Ventas_Total = 0 THEN 'C'
     WHEN Ventas_Total > 100 THEN 'S'
     WHEN Ventas_Total < 100 THEN 'L'
END AS Categoria

CASE表达式的另一种样式仅在您只想进行相等比较时有效,例如

CASE Ventas_Total
    WHEN 1 THEN 'A'
    WHEN 2 THEN 'B'
    WHEN 3 THEN 'C' END AS some_alias