2015-09-22 54 views
1

兩個表: 主題 評論(有一個主題領域,所以我知道哪一個主題的評論是)集團由也按順序?

我想每個主題中只有最新評論(在日期字段的最高值)然後以這種方式排列主題。

查詢我已經試過:

SELECT User, Topic, Date 
FROM Comments 
GROUP BY Topic 
ORDER BY Date DESC 
+0

選擇用戶,主題,日期從評論GROUP BY主題ORDER BY日期降序 – Tudvari

+0

我想這一點,但由於某種原因,它選擇的主題第一評論。 – Tudvari

回答

3

返回一行,如果沒有其他行具有相同的主題有一個較後日期。

SELECT User, Topic, Date 
FROM Comments c1 
where not exists (select 1 from Comments c2 
        where c2.topic = c1.topic 
        and c2.date > c1.date) 
order by date desc 
+0

謝謝,你的修正,出於某種原因,ajmedway的給了錯誤的用戶。 – Tudvari

+0

如果您不按規則遵循常規組,則MySQL有點不可預知。 (如果指定了GROUP BY子句,SELECT列表中的每個列引用都必須標識分組列或者是設置函數的參數。) – jarlh

+0

@Tudvari嘿,剛剛改進了我的查詢,你可以試試看看是否這行得通?好奇:) – ajmedway

1

試試這個,提高了答案:

SELECT `User`, 
     temp.`Topic`, 
     temp.`Date` 
FROM (
     SELECT `Topic`, 
       MAX(`Date`) `Date` 
     FROM `Comments` 
     GROUP BY `Topic` 
     ORDER BY MAX(`Date`) DESC 
    ) temp 
INNER JOIN `Comments` 
    USING (`Topic`, `Date`) 
+0

結果:https://i.gyazo.com/6a596068f3d6412679dbcf7d0b30a798.png 列:用戶,主題,日期 – Tudvari

+0

@Tudvari所以數據如預期?你是否介意我的答案,如果是的話?謝謝:) – ajmedway

+0

不,它不是。在主題1中有7條評論,並且由於某種原因,您的查詢選擇了其中的4條。 :( – Tudvari