【发布时间】: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)