2012-02-20 60 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());