MySQL – 在WHERE中使用别名报错

技术博客 / 3515人浏览 / 0人评论

出于某种原因,这不起作用:

select substring(rating, instr(rating,',') +1, +2) as val
from users where val = '15';

它给出了这个错误:
ERROR 1054 (42S22): Unknown column ‘val’ in ‘where clause’

解决办法:使用子查询(子查询时记得使用括号() )
首先,您不能在WHERE子句上使用ALIAS.你应该使用这个专栏,

SELECT SUBSTRING(rating, INSTR(rating,',') +1, +2) AS val 
FROM   users 
WHERE  SUBSTRING(rating, INSTR(rating,',') +1, +2) = '15'

原因如下:操作顺序是SQL,

FROM子句
WHERE子句
GROUP BY子句
HAVING子句
SELECT子句
ORDER BY子句

ALIAS发生在WHERE子句之前的SELECT子句上.

如果你真的想使用别名,请将其包装在子查询中,

SELECT *
FROM
    (
        SELECT SUBSTRING(rating, INSTR(rating,',') +1, +2) AS val 
        FROM   users
    ) s
WHERE   val  = '15'

0 条评论

还没有人发表评论

发表评论 取消回复

记住我的信息,方便下次评论
有人回复时邮件通知我