查询HAVING MAX()无法按预期工作

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了查询HAVING MAX()无法按预期工作相关的知识,希望对你有一定的参考价值。

我在数据库中有四个表。表格如下:

Cashier(cashier_id*, cashier_name)
Category(category_id*, category_name)
Product(product_id*, product_name, price, category_id**)
Purchase(product_id**, cashier_id**, amount)

* primary key
** foreign key

我想选择购买次数最多的类别名称。这是我到目前为止所做的,但我无法得到我想要的结果

SELECT x.category,x.amount
    FROM (SELECT category_name as category, SUM(amount) as amount FROM 
          Category c, Product pr, Purchase pu WHERE pr.product_id = 
          pu.product_id and c.category_id = pr.category_id GROUP BY 
          category_name) x
    GROUP BY x.category
    HAVING MAX(x.amount);

任何帮助,将不胜感激。

答案

据推测,你想要这样的东西:

SELECT c.category_name as category, SUM(amount) as amount
FROM Category c JOIN
     Product pr
     ON c.category_id = pr.category_id JOIN
     Purchase pu 
     ON pr.product_id = pu.product_id
GROUP BY category_name
ORDER BY SUM(amount) DESC
LIMIT 1;

切勿在FROM条款中使用逗号。始终使用正确,明确,标准的JOIN语法。

以上是关于查询HAVING MAX()无法按预期工作的主要内容,如果未能解决你的问题,请参考以下文章

使用 savedInstanceState 保存片段状态

Nodejs MongoDB 查询无法按预期工作

使用多个 LIKE 条件时,搜索查询无法按预期工作

带有导航组件的 Android 深层链接无法按预期工作

ElasticSearch嵌套查询无法按预期工作

使用正则表达式的 Rmongodb 无法按预期工作