文章来源https://www.lelee.top/jishuboke/MySQLzaiWHEREzhongshiyongbiemingbaocuo.html
出于某种原因,这不起作用:
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'
友情提醒:使用子查询的时候记得使用括号。
问题解决!