2014-02-06 18 views
-1

嘿,這是我的MySQL查詢mysql的獲取在小組最後一項通過

$userid="id of logged in user"; 

SELECT id, MAX(post_time) , message, user_name, receiver_id, sender_id 
FROM chat 
WHERE receiver_id =$userid 
OR sender_id =$userid 
GROUP BY GREATEST(receiver_id, sender_id) , LEAST(receiver_id, sender_id) 
ORDER BY id DESC 
LIMIT 0 , 1000 

它給記錄兩個用戶之間不是最後的第一條消息。正如我想要的最後一條消息顯示在郵件收件箱中。我用這個查詢,以顯示在收件箱中唯一的對話與不同用戶的登錄用戶(或U可以說,特定的用戶) 您可以查看演示@http://www.funnenjoy.com/home

+0

考慮提供適當的DDL(和/或sqlfiddle)與期望的結果集合在一起。 – Strawberry

回答

0

我得到這個代碼由我解決了.............如果任何一個需要它幫助了別人也三江源

SELECT m.* 
FROM (
SELECT sender_id + receiver_id -1 AS other_recipient_id, MAX(id) AS id 
FROM chat 
WHERE (sender_id =*user's_id* 
OR receiver_id =*user's_id*) 
GROUP BY sender_id + receiver_id -1 
)mm 
INNER JOIN chat m ON mm.id = m.id 
ORDER BY id ASC 
0

試試這個,

SELECT id, message, user_name, receiver_id, sender_id 
FROM chat 
WHERE post_time = MAX(post_time) AND (receiver_id =$userid 
OR sender_id =$userid) 
GROUP BY GREATEST(receiver_id, sender_id) , LEAST(receiver_id, sender_id) 
ORDER BY id DESC 
LIMIT 0 , 1000 
+0

感謝您的回覆,但您的代碼可能不正確,或者不適合我。對不起.............. –

+0

我發佈了新的答案。這可能對你有幫助 –

0

這可能有助於你

SELECT id, message, user_name, receiver_id, sender_id 
FROM chat 
WHERE receiver_id =$userid 
OR sender_id =$userid 
HAVING post_time = MAX(post_time) 
GROUP BY GREATEST(receiver_id, sender_id) ,   LEAST(receiver_id, sender_id) 
ORDER BY id DESC 
LIMIT 0 , 1000 
+0

它給出了以下錯誤:你的SQL語法有錯誤;檢查與您的MySQL服務器版本相對應的手冊,以找到'OR_ sender_id = HAVING post_time = MAX(post_time)GROUP BY GREATEST(receiver_'at line 4' –

+0

')在「GROUP BY」後面寫上「HAVING」 「然後試試 –

+0

嘿,這回到了只有一條消息傳出的對話抱歉........ :) –

相關問題