2012-05-15 38 views
1

我已經被分配到一個網站上進一步開發,在這個網站上,這個網站是一個便利店經理的網站,用於監控「本週食品雜貨袋」裏面的什麼物品。前任開發人員乾的工作很瑣碎,所以每當管理人員認爲:「該死!我需要編輯這篇文章,因爲我剛剛輸入了錯誤的值。」他們必須輸入具有相同名稱的新文章,然後他們有兩個同名的文章,但價格和DATE_TIME(輸入文章的日期和時間)不同。該數據庫看起來是這樣的:SELECT語句獲取最新的行

________________________________________________ 
|___itemId___|___price___|______date_time______| 
|  1  | 2.30 | 2012-01-01 00:00:00 | 
|  2  | 1.50 | 2012-01-01 00:00:00 | 
|  3  | 5.99 | 2012-01-01 00:00:00 | 
|  4  | 0.99 | 2012-01-01 00:00:00 | 
|  4  | 2.00 | 2012-01-01 00:10:00 | 
|  4  | 4.99 | 2012-01-01 00:20:00 | 
|  5  | 10.00 | 2012-01-01 00:00:00 | 
|  6  | 39.99 | 2012-01-01 00:00:00 | 

我工作的這個SELECT的itemId,價格,MAX(DATE_TIME)FROM mytable的讓每一個項目的最新行是這樣的:

________________________________________________ 
|___itemId___|___price___|______date_time______| 
|  1  | 2.30 | 2012-01-01 00:00:00 | 
|  2  | 1.50 | 2012-01-01 00:00:00 | 
|  3  | 5.99 | 2012-01-01 00:00:00 | 
|  4  | 4.99 | 2012-01-01 00:20:00 | 
|  5  | 10.00 | 2012-01-01 00:00:00 | 
|  6  | 39.99 | 2012-01-01 00:00:00 | 

但我得到的是:

________________________________________________ 
|___itemId___|___price___|______date_time______| 
|  4  | 4.99 | 2012-01-01 00:20:00 | 

有人可以幫助我解決這個問題嗎?

回答

2

添加GROUP BY條款:

SELECT itemId, price, MAX(date_time) 
FROM myTable 
GROUP BY itemId 
1

嘗試使用任何group bydistinct

1
SELECT t0.itemId, 
     t0.price, 
     t0.date_time 
FROM myTable AS t0 
     LEFT JOIN myTable AS t1 
     ON t0.itemId = t1.itemId 
      AND t1.date_time > t0.date_time 
WHERE t1.itemId IS NULL;