2010-10-27 31 views
1

基本上,我在MySQL中查詢3列,Item_id,Date和New_Qty。當我在日期列上使用最大值函數時,其他列都顯示相同日期範圍內的最大值。在MySQL中的最大功能不工作的方式我認爲它會

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」是最大的整個範圍。

任何幫助表示讚賞!

+0

提供一些關於您期望* item_id *和* new_qty *的更多詳細信息。 MAX()是一個聚合函數,當選擇其他沒有「GROUP BY」子句的列時通常不會使用它。 – 2010-10-27 01:11:04

回答

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子句中聲明,則其他列僅爲保證關係。

相關問題