2012-11-25 129 views
-1

我在表中有30個記錄標題相同,但每個記錄都有不同的ID和日期。如何在日期最近的查詢中返回?如何在MySQL GROUP BY中返回DATE的第一條記錄?

表看起來是這樣的:

Id - Title - Date 
----------------- 
1 - africa - 2012-11-27 
2 - africa - 2012-11-26 
3 - africa - 2012-11-25 

我需要返回哪個ID是3的記錄的查詢,即通過日期最近的。我試過的所有直到現在使用GROUP BY只返回記錄,至於Id是1.我該怎麼做?

+1

如果「日期」列有什麼值得注意的話,那麼記錄'id = 1'比'id = 3'更「近」? – eggyal

+0

最近的記錄是Id 1的記錄,所以也許您的查詢返回正確的結果。 –

回答

2

您想獲得第一條記錄,但這不是最近的。子查詢背後的想法是,它獲得每個標題的第一個日期,並將其與自身相加,只要它與標題和日期匹配即可。

SELECT a.* 
FROM tableName a 
     INNER JOIN 
     (
      SELECT title, MIN(DATE) minDate 
      FROM tableName 
      GROUP BY title 
     ) b ON a.title = b.titleAND 
       a.date = b.maxDate 
+0

非常棒。謝謝! – dvd

2

你想要groupwise maximum

SELECT * FROM my_table NATURAL JOIN (
    SELECT Title, MAX(Date) Date 
    FROM  my_table 
    GROUP BY Title 
) t 

看到它的sqlfiddle

如果定義「最近」由最高id,而不是與最新Date

SELECT * FROM my_table NATURAL JOIN (
    SELECT Title, MAX(id) id 
    FROM  my_table 
    GROUP BY Title 
) t 

看到它的sqlfiddle

+0

這不會返回每個標題的最近記錄的標識,我認爲這是OP的要求。 –

+0

@AlexeyFeldgendler:是的,它會的。 – eggyal