2013-02-22 114 views
0

我有那個基礎:http://sqlfiddle.com/#!2/e5a24/2這是WordPress默認模式的簡寫。我剪掉了那個例子中不需要的字段。MySQL |選擇特定的記錄

正如你所看到的,在結果中我有兩次「第一類」。我喜歡做的只是獲得最新的「第一類」實例。

爲SQL正確的結果如下:

POSTID POSTTITLE CATEGORYID CATEGORYNAME DATE 
-------------------------------------------------------------- 
2 2st Game 2 Category 2 January, 01 2013 00:00:00+0000 
3 1st Game 1 Category 1 January, 15 2013 00:00:00+0000 

我已經嘗試了集團通過「類別ID」,但同時,我的成績獲得第1類只有一個實例,我年齡的增長一個,而不是屬於「第1類」的最早期記錄。

對此有任何想法,我該如何解決?

+0

你確定SQL小提琴正在處理查詢權? – Miguelo 2013-02-22 18:06:34

回答

4
SELECT a.ID AS PostID, 
     a.post_title AS PostTitle, 
     c.meta_value AS CategoryID, 
     d.name AS CategoryName, 
     a.post_date AS Date 
FROM wp_posts a 
     INNER JOIN 
     (
      SELECT post_title, MAX(post_date) max_date 
      FROM wp_posts 
      GROUP BY post_title 
     ) b ON a.post_title = b.post_title AND 
       a.post_date = b.max_date 
     INNER JOIN wp_postmeta c 
      ON a.ID = c.post_ID 
     INNER JOIN wp_terms d 
      ON c.meta_value = d.term_ID 
WHERE c.meta_key = 'matchdayTeamsCategory' 
+1

這是假定帖子標題相同。爲什麼不分組職位類別? – 2013-02-22 17:58:34

+0

雖然在SQL小提琴工作正常,在我的真實數據,這是不正確的。在我的真實數據中,它只返回兩條記錄,而且似乎是通過PostTitle對我的結果進行分組。我不真的知道它有什麼問題:(無論如何感謝@JW你的迴應:) – 2013-02-22 18:04:07

2

你必須與你的小組使用MIN(日期)的

+0

你能舉個例子嗎? – 2013-02-22 17:34:18

+0

僅靠這一點可能仍會產生一些奇怪的結果,例如,在'postid'中,由於MySQL處理'GROUP BY'和'SELECT'中的額外列。 – 2013-02-22 17:35:17

+0

正確,最好的賭注看起來像是在其他答案中發佈的內容。 – 2013-02-22 17:55:37

2

使用ORDER BY日期DESC得到 「1類」 最新

+1

不起作用;) – 2013-02-22 17:36:26