2016-07-30 58 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