2016-07-30 31 views
0

我創建MySQL中的表下面的列日期時間:ORDER BY上GROUP_CONCAT不工作

id - from_id - to_id - datetime - message 

在日期時間列中的日期時間存儲這樣的:

2016-07-28 17:36:24 
2016-07-28 17:39:24 
2016-07-28 17:41:15 

我會哄GROUP_CONCATto_id存儲來自from_id的所有消息,並只顯示1條消息(最新)。我的查詢是:

SELECT id, from_id, time_sent, message, GROUP_CONCAT(to_id order BY 
time_sent DESC) FROM messages WHERE to_id = '1' GROUP BY from_id 

我通過from_id得到的所有結果hroup但該消息是最前面的一個。好像order BY time_sent DESC未被應用。

我試過訂單BY UNIX_TIMESTAMP(time_sent)DESC,嘗試在查詢的末尾放置順序。沒有工作。我想通過from_id顯示最新消息。

+1

'選擇ID,from_id,time_sent,消息... GROUP BY from_id'正如你看到的,你按'from_id'但沒有聚集功能顯示更多的列。現在MySQL可以選擇任何行。相關:[mySQL和postgreSQL中的group by子句,爲什麼postgreSQL中的錯誤?](http://stackoverflow.com/a/33629201/5070879) – lad2025

+0

你可以給你的數據** sql小提琴**所以我們可以給儘可能快地回答 – Sadikhasan

+0

我認爲你的查詢有一個錯誤,因爲在where子句中你寫了「to_id ='1'」和GROUP_CONCAT on_id然後結果將只是「1」 –

回答

0
SELECT id, 
     from_id, 
     time_sent, 
     message, 
     GROUP_CONCAT(to_id) 
FROM 
    (SELECT * 
    FROM messages 
    WHERE to_id = '1' 
    ORDER BY time_sent DESC) AS test 
GROUP BY from_id 

SQL Fiddle

+0

Sadik bro ..現在這更令人沮喪。它在SQL小提琴上工作,我可以看到,但它不在我本地的MySQL上。當我嘗試用php或甚至在phpadmin的控制檯爲mysql,我只得到第一篇文章,而from_id是在ASC。請檢查http://imgur.com/a/BoFRf ..我做錯了什麼? – Somename