2012-02-20 63 views
0
$query = mysql_query("SELECT *, MAX(date_time) FROM messages 
         WHERE user_to='$current_user' OR user_from='$current_user' 
         GROUP BY conversation 
         ORDER BY date_time DESC LIMIT 0,5") or die(mysql_error()); 

echo $message['MAX(date_time)']; 

如何显示与此处选择的date_time位于同一行的列'content',以便与消息匹配?难道是像在同一行中获取值的汇总MYSQL函数

echo $message['MAX(content)']; 

我想在组(称为会话)“消息”,我想,以显示最新的消息。它当前显示最近的时间,但不显示最近的消息。

谢谢。

+3

您是否对问题做过一些研究?在这里有几百个关于你的问题的问题 – zerkms 2012-02-20 09:30:24

+0

你不应该真的使用'...或死亡(敏感信息);'在生产中,顺便说一句。 – biziclop 2012-02-20 09:43:39

回答

2

如果你的表有一个自动增量 ID列的消息ID使用,则值最高的ID也应该是最新的消息在对话

0

按日期时间排序您的消息,只取第一个元组(LIMIT 1)。 我不明白为什么你聚合,如果你只是想从消息的最新元组。也许你可以详细说明并提供一些关于表格的更多信息。

SELECT content, date_time 
FROM messages 
WHERE user_to='$current_user' OR user_from='$current_user' 
ORDER BY date_time DESC 
LIMIT 1 
1

试试下面:

SELECT * from messages as ts 
LEFT JOIN (select max(id) as maxid from messages group by date_time) as tsm 
ON ts.id=tsm.maxid 
WHERE (ts.user_to='$current_user' OR ts.user_from='$current_user') 
ORDER BY ts.date_time DESC LIMIT 0,5 

假设ID是primary消息表中的键列

0

如果您有自动递增键,可以试试:

$query = mysql_query("SELECT * FROM messages as m 
         WHERE user_to='$current_user' OR user_from='$current_user' AND 
          id IN (SELECT MAX(id) FROM messages as m2 GROUP BY m2.conversation) 
         ORDER BY date_time DESC LIMIT 0,5") or die(mysql_error());