编写含DISTINCT与CASE的SQL查询遇语法错误,求解决方案
问题排查与修正方案
错误原因
你的SQL存在三处语法/逻辑问题,直接导致了lint报错:
- 缺少列分隔逗号:
SELECT子句里time_created和CASE语句之间没有加逗号,SQL解析器会误将CASE当成time_created的后续操作,触发语法识别错误。 - 未实现去重逻辑:没有添加
DISTINCT关键字,无法满足“返回唯一id行”的需求。 - 类型不匹配:
category是大整数型,WHERE条件里用字符串引号包裹数值,会引发不必要的类型转换问题。
修正后的SQL
SELECT DISTINCT ID, time_created, CASE WHEN status = 'good' THEN 'GOOD' WHEN status = 'bad' THEN 'BAD' END AS STATUS_new FROM TBL WHERE CATEGORY = 871654671 ORDER BY time_created
关键修改说明
- 在
time_created后添加逗号,让CASE语句被正确识别为独立查询列。 - 开头添加
DISTINCT,确保返回的id是唯一的。 - 去掉
WHERE中871654671的引号,匹配category的大整数类型。
内容的提问来源于stack exchange,提问作者var1abl3
相关产品推荐
相关产品推荐

