出于某种原因,这不起作用:
select substring(rating, instr(rating,',') +1, +2) as val
from users where val = '15';
Run Code Online (Sandbox Code Playgroud)
它给出了这个错误:
ERROR 1054(42S22):'where子句'中的未知列'val'
那我该怎么办?
Joh*_*Woo 26
首先,你不能ALIAS在WHERE条款上使用.你应该使用这个专栏,
SELECT SUBSTRING(rating, INSTR(rating,',') +1, +2) AS val
FROM users
WHERE SUBSTRING(rating, INSTR(rating,',') +1, +2) = '15'
Run Code Online (Sandbox Code Playgroud)
原因如下:操作顺序是SQL,
在ALIAS需要的地方SELECT也就是前子句WHERE子句.
如果你真的想使用别名,请将其包装在子查询中,
SELECT *
FROM
(
SELECT SUBSTRING(rating, INSTR(rating,',') +1, +2) AS val
FROM users
) s
WHERE val = '15'
Run Code Online (Sandbox Code Playgroud)
Hei*_*ati 10
你肯定可以使用MySQL,请看下面,刚刚测试过,它工作得很好:
Select substring(rating, instr(rating,',') +1, +2) as val
From users
Having val = '15';
Run Code Online (Sandbox Code Playgroud)
您还可以执行“让 val 为空”等操作。
对于 ALIAS,您不能使用 WHERE,但使用 HAVING 可以解决问题。
H