【问题标题】:Syntax error in my sql query: CASE error我的 sql 查询中的语法错误:CASE 错误
【发布时间】:2017-10-20 05:34:11
【问题描述】:

我有一个 sql 查询,对我来说,它看起来不错,但我得到了一个错误。错误是:

ProgrammingError: 1064 (42000): 您的 SQL 语法有错误; 检查与您的 MySQL 服务器版本相对应的手册 在'AS区域附近使用正确的语法)FROM country as c INNER JOIN country_translation AS t ON c.id = t.cou' 在第 1 行

查询是:

query = "SELECT DISTINCT c.id, c.shortname, c.name, (CASE WHEN rt.name is NULL then '' else rt.name" \
                " AS region) " \
                "FROM country as c " \
                "INNER JOIN country_translation AS t ON c.id = t.country_id AND t.locale = '{locale}' " \
                "INNER JOIN region_translation AS rt ON c.region_id = rt.region_id " \
                "AND rt.locale = '{locale}' " \
                "INNER JOIN outlet AS o ON o.billing_country = c.shortname " \
                "INNER JOIN merchant AS m ON o.merchant_id = m.id " \
                "INNER JOIN offer_ent_active AS ofr ON o.merchant_id = m.id " \
                "WHERE m.category = '{category}' "

问题似乎出在第一个 INNER JOIN 上。这里有什么问题?

【问题讨论】:

  • 您的CASE 缺少END
  • @GiorgosBetsos 我将查询更改为看起来像 "SELECT DISTINCT c.id, c.shortname, c.name, (CASE WHEN rt.name IS NULL THEN '' ELSE rt.name END AS region) " 但我仍然遇到同样的错误
  • 试试... END) AS region,或者完全去掉括号。反正你也不需要它们。
  • 是的,括号是问题所在。 (Y)

标签: mysql sql


【解决方案1】:

CASE语句的语法是

  CASE expression
        WHEN condition1 THEN result1
        WHEN condition2 THEN result2
       ...
        WHEN conditionN THEN resultN
        ELSE result
    END

在您的查询中缺少 case 语句 END

CASE WHEN rt.name is NULL 
     THEN '' 
     ELSE rt.name
END AS region

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-10
    相关资源
    最近更新 更多