SQL:为什么这些查询返回不同的结果?

时间:2017-06-17 14:31:46

标签: mysql sql database mysqli sum

为什么MAX显示与SUM不同?

SELECT name, price, MAX(downloads) FROM app_list GROUP BY price;
SELECT name, price, SUM (downloads) FROM app_list GROUP BY price;

    name    price   MAX(downloads)
    ABC     0.0     30000

    name    price   SUM(downloads)
    XYZ     0.0     1000500

在第二个查询中,免费的XYZ应用具有最多的下载量。那么应用ABC哪个免费是下载量最多的应用程序?

3 个答案:

答案 0 :(得分:2)

您正在使用MySQL的(错误)功能,不应该允许这样简单。实际上,系统参数ONLY_FULL_GROUP_BY是最新版本中的默认值。

问题是什么?这是您的第一个查询:

SELECT name, price, MAX(downloads)
FROM app_list
GROUP BY price;

无论你想到或希望它做什么,事实是它为每个name返回不确定 price。该名称与最大值无关。

如果需要最大值,请使用子查询。这是一种方式:

SELECT a.*
FROM app_list a
WHERE a.downloads = (SELECT MAX(a2.downloads) FROM app_list a2 WHERE a2.price = a.price);

此查询还具有以下优势:它可以轻松利用app_list(price, downloads, name)上的查询。

答案 1 :(得分:0)

为什么id应返回相同的值?

https://dev.mysql.com/doc/refman/5.7/en/group-by-functions.html

  

SUM()返回总和

     

MAX()返回最大值

答案 2 :(得分:0)

我认为您希望通过名称

制作GROUP BY