mysql中的多个案例无法正常工作

时间:2016-03-11 05:16:02

标签: mysql

我正在尝试使用以下代码,但它对我不起作用。

SELECT t1.*,t2.service_id,t2.provider_name ,t3.id,t3.api_name,t4.id, t4.member_no,
    (
        CASE t1.status WHEN 0 THEN 'Success'
                       WHEN 1 THEN 'Failed'
                       WHEN 4 THEN 'Hold/InQueue'
                       WHEN 6 THEN 'Pending'
                       WHEN 9 THEN 'Error'
    ) AS status1,
    (
        CASE t1.stv WHEN 0 THEN 'TopUp'
                    WHEN 1 THEN 'scheme' END
    ) AS scheme
FROM tbl_mobile_recharge t1 INNER JOIN tbl_service_providers t2 
    ON t1.opcode = t2.id
INNER JOIN tbl_mobile_api_master t3
    ON t1.api_id = t3.id
INNER JOIN tbl_retailer t4
    ON t1.user_id = t4.id
WHERE 1=1 AND t1.added_on >='2016-03-01 00:00:00' AND t1.added_on <='2016-03-11 23:59:59'
    AND 1=1 AND 1=1
ORDER BY t1.id DESC
LIMIT 0,8

我在下面收到错误

  

发生数据库错误错误号:1064

您有错误   在你的SQL语法中;查看与MySQL对应的手册   服务器版本,用于正确的语法,使用附近&#39;)作为status1,(案例   t1.stv当0然后&#39; TopUp&#39;当1然后&#39; scheme&#39;作为方案&#39;在   第1行

请帮忙。

2 个答案:

答案 0 :(得分:4)

你的第一个案例陈述错过了它的“结束”。可能还想添加默认值。

答案 1 :(得分:1)

您在第一个END声明中缺少CASE标记。请尝试使用此代码:

CASE t1.status WHEN 0 THEN 'Success'
               WHEN 1 THEN 'Failed'
               WHEN 4 THEN 'Hold/InQueue'
               WHEN 6 THEN 'Pending'
               WHEN 9 THEN 'Error'
               END