无法在 WHERE 子句中引用别名
尝试在 SQL 语句的 WHERE 子句中引用别名时,用户可能会遇到错误表明指定的列不存在。出现此错误的原因是 SQL 执行遵循特定顺序,即 WHERE 子句在 SELECT 子句之前计算。因此,在执行 WHERE 子句时,无法识别 SELECT 子句中定义的别名。
原因
在提供的示例中,以下查询尝试筛选行基于 SELECT 子句中创建的别名 (_year):
SELECT SUBSTRING(pk, 6, 2)::INT AS _year FROM listing WHERE _year > 90
此查询将产生以下结果错误:
ERROR: column "_year" does not exist
解决方案
要解决此问题并在 WHERE 子句中引用别名,必须重写查询以使用基础列:
SELECT SUBSTRING(pk, 6, 2)::INT AS _year FROM listing WHERE SUBSTRING(pk, 6, 2)::INT > 90
通过直接引用用于创建别名(_year)的列(pk),查询将成功执行并检索所需的结果。
以上是为什么我不能在 SQL WHERE 子句中使用别名?的详细内容。更多信息请关注PHP中文网其他相关文章!