我有消息表格式如下:從信息表中查詢對話
+------------------------------------------------------------------+
| id|sender_id| recipient_id | message_text |created_at |
+------------------------------------------------------------------+
| 1 | 2 | 10 | "test1" |"2017-04-10 09:05:45" |
| 2 | 10 | 2 | "test2" |"2017-04-10 09:05:47" |
| 3 | 2 | 4 | "test3" |"2017-04-10 09:05:49" |
| 4 | 10 | 4 | "test4" |"2017-04-10 09:05:51" |
| 5 | 4 | 2 | "test5" |"2017-04-10 09:05:53" |
| 6 | 2 | 10 | "test6" |"2017-04-10 09:05:58" |
+------------------------------------------------------------------+
我想要做的就是讓所有的「對話」一登錄的用戶(比如ID爲2的用戶) ,以及該對話的最後消息。 我設法拔出用戶用戶2的ID的擁有與使用此查詢消息:
select distinct users.id
from messages, users where
(recipient_id = 2 and users.id = sender_id)
or
(sender_id = 2 and users.id = recipient_id);
這是什麼產生是
4
10
爲用戶2已經無論是從這兩個人發送和/或接收的消息(test1, test2, test6
對於10
和test3, test5
對於4
)。
我不能做的就是修改這個查詢,從而也產生了由產生的ID發送或接收的最後一條消息 - 例如
4 | test5
10 | test6
這確實給了我幾乎所需的結果,但我需要最近的消息而不是他們的日期。如果我只是添加消息文本進行選擇,那麼您使用日期所做的部分仍然正確,但我收到的消息與日期不匹配。我喜歡這個方法,你能不能解釋一下你是如何得到這個解決方案的? – hpdobrica
修改後的查詢就像一個魅力!我真的很想聽聽你在那裏做了些什麼,我不想只是複製/粘貼它哈哈:) – hpdobrica
@hpdobrica我給了你一個更深的解釋。 –