MySQL中的Max函数没有像我想象的那样工作

时间:2010-10-27 01:03:35

标签: sql mysql aggregate-functions

基本上,我在MySQL,Item_id,Date和New_Qty中查询3列。当我在日期列上使用max函数时,其他列都会显示相同日期范围的最大值。

SELECT `item_id` , max(date) AS max_date ,`new_qty` 
FROM `item_warehouse_link_history`
WHERE warehouse_id =1
AND item_id=1000
AND DATE
BETWEEN '2010-10-01 12:00:00'
AND '2010-10-07 12:00:00'

所以,当我试图找到最新日期的“new_qty”时,最新日期弹出正常,但“new_qty”是整个范围的最大值。

感谢任何帮助!

1 个答案:

答案 0 :(得分:1)

使用:

SELECT x.item_id,
       x.date,
       x.new_qty
  FROM ITEM_WAREHOUSE_LINK_HISTORY x
  JOIN (SELECT t.item_id, 
               MAX(t.date) AS max_date
          FROM item_warehouse_link_history t
         WHERE t.warehouse_id = 1
           AND t.item_id = 1000
           AND t.date BETWEEN '2010-10-01 12:00:00'
                          AND '2010-10-07 12:00:00'
      GROUP BY t.item_id) y ON y.item_id = x.item_id
                                                      AND y.max_date = x.date

聚合函数(IE COUNT,MIN,MAX,SUM等)仅对提供的​​值进行操作(如果在应用聚合函数之前组合两列或更多列的值) - 其他如果在GROUP BY子句中声明了聚合函数中未提及的列,则列只是保证关系。