我的查询有问题,怎么了?
SELECT
CASE
WHEN cp_pessoa.score < 100 THEN 1
WHEN cp_pessoa.score < 300 THEN 2
WHEN cp_pessoa.score >= 300 THEN 3
END as id_ranking
FROM cp_pessoa
WHERE id_ranking IN (1,2);
我收到此错误:#1054 - “where 子句”中的未知列“id_ranking”
谢谢!
最佳答案
这是因为 SELECT 在调用 WHERE 之后准备结果(作为 id_ranking)。
SELECT
CASE
WHEN cp_pessoa.score < 100 THEN 1
WHEN cp_pessoa.score < 300 THEN 2
WHEN cp_pessoa.score >= 300 THEN 3
END as id_ranking
FROM cp_pessoa
WHERE cp_pessoa.score < 300;
这是它的工作原理(顺序):
- FROM 子句
- WHERE 子句
- GROUP BY 子句
- HAVING子句
- SELECT子句
- ORDER BY 子句
关于MySQL Case 语句 - 未知列在哪里,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20552989/