Mysql select查询的计算字段出错

Mysql select查询的计算字段出错,mysql,sql,Mysql,Sql,此查询给我的错误为1054-where子句中的未知列“totalamount” SELECT (amount1 + amount2) as totalamount FROM `Donation` WHERE totalamount > 1000 我知道我可以通过使用GROUPBY子句并用having子句替换where条件来解决此错误。但除了使用having子句之外,还有其他解决方案吗。如果GROUPBY是唯一的解决方案,那么我想知道为什么我必须使用GROUPBY子句,即使我没有

此查询给我的错误为1054-where子句中的未知列“totalamount”

 SELECT (amount1 + amount2) as totalamount 
 FROM `Donation` 
 WHERE totalamount > 1000
我知道我可以通过使用GROUPBY子句并用having子句替换where条件来解决此错误。但除了使用having子句之外,还有其他解决方案吗。如果GROUPBY是唯一的解决方案,那么我想知道为什么我必须使用GROUPBY子句,即使我没有使用任何聚合函数

谢谢。

不行

在聚合上具有筛选器时,其中筛选器列

不行

在聚合上具有筛选器时,其中筛选器列


请参见

我不希望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

我不希望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

根据SQL方言的不同,不能将派生列放入where子句中

WHERE (amount1 + amount2) > 1000
而是使用where子句

WHERE (amount1 + amount2) > 1000

根据SQL方言的不同,不能将派生列放入where子句中

WHERE (amount1 + amount2) > 1000
而是使用where子句

WHERE (amount1 + amount2) > 1000

我建议你使用安多玛答案中的一个变体

MySQL允许的是:不要使用它,它不是标准的,几乎任何其他DBMS都不允许它:

SELECT (amount1 + amount2) AS totalamount 
  FROM Donation 
  HAVING totalamount > 1000 ;

我建议你使用安多玛答案中的一个变体

MySQL允许的是:不要使用它,它不是标准的,几乎任何其他DBMS都不允许它:

SELECT (amount1 + amount2) AS totalamount 
  FROM Donation 
  HAVING totalamount > 1000 ;

重复WHERE子句中的总和。如果我有非常复杂的计算,那么??这只是一个例子,那么我想你最好用group by,让…重复WHERE子句中的求和。如果我有非常复杂的计算,那么??这仅仅是一个例子,然后我想你最好使用groupby和have…我说过我知道如何使用having子句来解决它。我想知道为什么我必须使用GROUPBY子句,即使我没有使用任何聚合函数CREATE view Tot作为选择amount1+amount2作为捐款总额;从Tot中选择*其中totalamount>1000;having子句可以对列和聚合进行过滤。我说过我知道如何使用having子句来解决它。我想知道为什么我必须使用GROUPBY子句,即使我没有使用任何聚合函数CREATE view Tot作为选择amount1+amount2作为捐款总额;从Tot中选择*其中totalamount>1000;having子句可以对列和聚合进行筛选,具体取决于方言?哪种方言允许这样的事情?取决于方言?哪种方言允许这样的事情?