BETWEEN和AND中的聚合函数

时间:2013-12-05 08:50:29

标签: mysql sql

我在查询中加入了3个表。在我的库存数据库中,价格来自表c,数量来自表b。如何显示在列的给定值和最大值之间进行排序的用户的记录列表。 我在mysql中使用下面的查询来检索记录。正如所料,它显示错误。任何帮助将受到高度赞赏

SELECT .... GROUP BY userid HAVING  SUM(c.`price` * b.`quantity`) BETWEEN 9000 AND MAX(SUM(c.`price` * b.`quantity`))

1 个答案:

答案 0 :(得分:2)

如果我理解正确,则不需要BETWEEN。试试这种方式

SELECT .... 
GROUP BY userid 
HAVING SUM(c.`price` * b.`quantity`) >= 9000

如果您想知道无法链接聚合函数。即使你可能它没有意义,因为你按用户ID分组,但试图从所有用户获得SUM的MAX。为了实现这一点,你应该使用子查询来获得最大值,例如

SELECT .... 
GROUP BY userid 
HAVING SUM(c.`price` * b.`quantity`) =
(
  SELECT MAX(total) total
    FROM
  (
    SELECT SUM(c.`price` * b.`quantity`) total
    GROUP BY userid 
  ) q
)