2013-07-30 79 views
0

我有這個查詢,我試圖列出一些位置(公園)的順序,他們有新聞報道附加到他們。以下是查詢。按日期排序的MySQL查詢不按需要執行

SELECT tpf_news.park_id, date, name 
FROM tpf_news 
INNER JOIN tpf_parks ON tpf_news.park_id = tpf_parks.park_id 
GROUP BY name ORDER BY date DESC 

內加入只是用來從「park_id」得到公園「名稱」。我已經使用了GROUP,因爲有些公園有不止一個故事,我只希望每個公園都在列表中顯示一次。因爲我必須在訂購之前進行分組,這意味着查詢使用的是最近的日期,而不是最近的日期。所以排序是錯誤的。

如何更改此查詢,以便每個公園仍然只會列出一次,但會按照最近的日期到最早的日期正確排序。

謝謝。

回答

0

使用max(date)

SELECT tpf_news.park_id, max(date), name 
FROM tpf_news 
INNER JOIN tpf_parks ON tpf_news.park_id = tpf_parks.park_id 
GROUP BY name 
ORDER BY max(date) DESC 
+0

這看起來很完美。謝謝。 – user2574794

0

如果你想獲得與每個園區相關的最早日期,就需要在該列執行groupwise minimum。那麼你的ORDER BY將按照你的預期工作,因爲你有正確的日期。

當你做一個GROUP BY查詢像你這樣的,但沒有指定在你的SELECT子句列的集合(如COUNTMIN),MySQL選擇要使用其值的行之一。這很難預測或控制,因此您需要使用羣組最大值或最小值,如上面的鏈接所示。