需要以一个查询结果作为查询条件
例如
SELECT *,SUBSTR(a,10,8) as `b` FROM `test` where `b`=1 以此sn8作为where条件
但是这样会报错,表示b列不存在
因为mysql底层跑SQL语句时:where 后的筛选条件在先, as b的别名在后。所以机器看到where 后的别名是不认的,所以会报说b不存在。
这个b只是字段a查询结果的一个别名
如果非要用B做筛选条件的话:解决方案:外边再嵌套一层。
SELECT * FROM (
SELECT *,SUBSTR(a,10,8) as `b` FROM `test`
)t
WHERE t.b='1' -- 任意的筛选条件
如果不嵌套,只能用A做筛选条件了