This question already has answers here:
SQL select only rows with max value on a column [duplicate]

(27个答案)


4年前关闭。




初始表如下所示:
Fruit  | Item_ID | Production_line | Amount_produced | Production_date
---------------------------------------------------------------
Apples | 652     | 1               | 24              | 2016-05-12
Pears  | 455     | 4               | 54              | 2016-05-16
Pears  | 455     | 2               | 26              | 2016-05-13
Apples | 652     | 6               | 65              | 2016-05-14
Apples | 652     | 3               | 24              | 2016-05-21
Pears  | 455     | 7               | 54              | 2016-05-17
Pears  | 455     | 5               | 26              | 2016-05-15
Apples | 652     | 8               | 65              | 2016-05-22

结果,我希望看到的是按Item_ID以及所有其他列分组的最高级别的生产线(因为它们根据所在的级别从1开始编号):
Fruit  | Item_ID | Production_line | Amount_produced | Production_date
---------------------------------------------------------------
Pears  | 455     | 7               | 54              | 2016-05-17
Apples | 652     | 8               | 65              | 2016-05-22

当我在查询末尾将SELECT与MAX(Production_line)以及GROUP BY Item_ID一起使用以根据Item_ID对水果进行分组时,我没有得到正确的生产日期(不确定是否拉随机的日期或什么) )或产生的正确数量。

我在此表中没有主键。

我正在使用MySQL使用phpMyAdmin。

最佳答案

有一个子查询,返回的每个水果的Production_line值最高。 JOIN的结果:

select f1.*
from fruits f1
join (select fruit, max(Production_line) as maxProduction_line
      from fruits
      group by fruit) f2
    on f1.fruit = f2.fruit and f1.Production_line = f2.maxProduction_line

关于mysql - SQL选择组的最大值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42902111/

10-10 11:11