我试图在where子句中使用选定字段的命名别名,但数据库抱怨无法找到所述字段。
查询:
SELECT somefunction(myfield) as mytest, myotherfield as mytest2
FROM database.table
WHERE mytest IS NULL OR mytest2 IS NULL
期望:数据库只会测试somefunction(myfield)
或mytest
的结果为NULL
结果:数据库无法找到mytest
或mytest2
我有什么遗失的东西;为什么这样的事情不起作用?
答案 0 :(得分:4)
编辑:对不起表。选择somefunction(myfield)作为mytest,myotherfield作为mytest2 FROM 表 WHERE mytest IS NULL或mytest2 IS NULL
可能重复:
Using column alias in WHERE clause of MySQL query produces an error
<强>答案:强>
您只能在GROUP BY,ORDER BY或HAVING子句中使用列别名。
标准SQL不允许您引用WHERE中的列别名 条款。强制执行此限制是因为WHERE代码是 执行后,列值可能尚未确定。
从http://dev.mysql.com/doc/refman/5.0/en/problems-with-alias.html
复制