Функция Max в MySQL не работает так, как я думал - PullRequest
1 голос
/ 27 октября 2010

По сути, я запрашиваю 3 столбца в MySQL, Item_id, Date и New_Qty.Когда я использую функцию 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 Ответ

1 голос
/ 27 октября 2010

Использование:

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.

...