此查询给出了错误#1054 - 未知列' totalamount'在' where子句'
SELECT (amount1 + amount2) as totalamount
FROM `Donation`
WHERE totalamount > 1000
我知道我可以通过使用group by子句来解决这个错误,并用having子句替换where where条件。但除了使用having子句之外还有其他任何解决方案。如果group by是唯一的解决方案,那么我想知道为什么我必须使用group by子句,即使我没有使用任何聚合函数
感谢。
答案 0 :(得分:3)
我不希望MySQL提供该错误消息,但许多其他数据库都这样做。在其他数据库中,您可以通过重复列定义来解决它:
SELECT amount1 + amount2 as totalamount
FROM Donation
WHERE amount1 + amount2 > 1000
或者您可以使用子查询来避免重复:
SELECT totalamount
FROM (
select amount1 + amount2 as totalamount
, *
from Donation
) as SubQueryAlias
WHERE totalamount > 1000
答案 1 :(得分:1)
答案 2 :(得分:1)
根据SQL方言,您不能将派生列放在where子句中。
而是使用where where子句。
WHERE (amount1 + amount2) > 1000
答案 3 :(得分:1)
我建议您使用Andomar答案中的一种变体。
MySQL允许这样做(不要使用它,它不是标准的,几乎任何其他DBMS都不允许):
SELECT (amount1 + amount2) AS totalamount
FROM Donation
HAVING totalamount > 1000 ;