这是我的SQL代码:
SELECT `qty`,`unitprice`, qty * unitprice as Stock FROM item where Stock<1000
但是它说:
#1054 - 'where子句'中的未知栏'Stock'
如何解决?
答案 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