Mysql别名在哪里条件

时间:2014-02-21 18:25:36

标签: mysql sql

这是我的SQL代码:

SELECT `qty`,`unitprice`, qty * unitprice as Stock FROM item where Stock<1000

但是它说:

  

#1054 - 'where子句'中的未知栏'Stock'

如何解决?

3 个答案:

答案 0 :(得分:3)

正如Problems with Column Aliases所述:

  

标准SQL不允许在WHERE子句中引用列别名。强制执行此限制是因为在评估WHERE子句时,可能尚未确定列值。

您必须在WHERE子句中重复计算:

SELECT qty, unitprice, qty * unitprice as Stock
FROM   item
WHERE  qty * unitprice < 1000

答案 1 :(得分:0)

你不能在where条件中拥有别名。它只会暴露给下一层 - 调用应用程序,或父查询,如果它被写为子查询。

where qty * unitprice < 1000

答案 2 :(得分:0)

通过添加括号,MySQL首先计算新值。如果没有,则会出现语法错误

SELECT qty,unitprice, (qty * unitprice) as Stock 
FROM item where (qty * unitprice)<1000