我在以下mysql查询中有错误?
SELECT *,
CASE
WHEN vat = '1' THEN '1.10'
WHEN vat = '2' THEN '1.21'
END AS _vat,
CASE
WHEN sleva_kc != '' AND sleva_procent = '' THEN ((cena - sleva_kc) * _vat)
WHEN sleva_kc = '' AND sleva_procent != '' THEN ((cena * (1 - (sleva_procent / 100))) * _vat)
WHEN sleva_kc = '' AND sleva_procent = '' THEN (cena * _vat) END AS _cena
FROM kws_produkty WHERE _cena >= '100' AND _cena <= '500'
我使用mysql连接器:
说明:
我需要输出:
谢谢。
答案 0 :(得分:0)
你的SQL完全被破坏了。您的case
语句位于无法使用的位置,并且您使用的是elseif
,但确实有if
语句。
SELECT
CASE .... END CASE,
IF ... THEN ... ELSEIF ... END IF
FROM yourtable
WHERE ....
我建议您开始阅读语法文档:https://dev.mysql.com/doc/refman/5.0/en/case.html
答案 1 :(得分:0)
您的CASE WHEN ... END
表达式应该是字段列表的一部分 - 在FROM
- 子句之前。
在WHERE
- 子句中使用列别名是非法的,请参阅manual:
标准SQL不允许在WHERE子句中引用列别名。强制执行此限制是因为在评估WHERE子句时,可能尚未确定列值。