SELECT PARENT_ID as val FROM `xx` where val is not null
报错如下:
SELECT PARENT_ID as val FROM `xx` where val is not null
> 1054 - Unknown column 'val' in 'where clause'
> 时间: 0.001s
首先,要知道SQL的执行顺序,如下:
> FROM子句
> WHERE子句
> GROUP BY子句
> HAVING子句
> SELECT子句
> ORDER BY子句
因此SQL在执行WHERE子句时,SELECT子句还没有执行,因此字段的别名还没有被定义,所以会报错!也就是想用SELECT子句定义的别名,只有ORDER BY子句能用!
若非要使用SELECT子句的别名,可以将带有别名的SELECT子句作为子查询使用
SELECT
*
FROM
( SELECT PARENT_ID AS val FROM `xx` ) temp
WHERE
val IS NOT NULL