談話的最後一條消息我有一個表叫messages
:檢索每個地方用戶是participent
| id | from_id | to_id | text
+----+---------+-------+------------------
| 1 | 1 | 2 | from 1 to 2
| 2 | 2 | 1 | from 2 to 1
| 3 | 1 | 3 | from 1 to 3
| 4 | 3 | 1 | from 3 to 1
| 5 | 2 | 3 | from 2 to 3
| 6 | 1 | 2 | from 1 to 2 (2)
,其中用戶是一個什麼會是將檢索每個會話的最後一條消息簡單的查詢參與者(發件人 - from_id
或收件人 - to_id
)?
結果應該是:
| id | from_id | to_id | text
+----+---------+-------+------------------
| 4 | 3 | 1 | from 3 to 1
| 6 | 1 | 2 | from 1 to 2 (2)
這是我已經試過:
SELECT * FROM `messages`
WHERE `id` IN (
SELECT MAX(`id`) FROM `messages`
WHERE `from_id` = 1 OR `to_id` = 1
GROUP BY `from_id`, `to_id`
)
它的問題是,在談話中如果用戶一直都發件人和收件人,它將檢索用戶發送的最後一條消息和用戶收到的最後一條消息。
@EmanuilRusev感謝你的編輯,它好多了。請不要覺得我在挑選你。我只是想讓你提出一個問題,讓其他用戶更容易提供幫助,如果你的問題能幫助解決他們的問題,它還可以讓用戶來到網站。 – Taryn 2015-02-09 15:42:55
對不起,我很困惑。你說你應該得到的數據(「結果應該是」)看起來像你說你不希望得到的數據(「用戶發送的最後一個問題和它收到的最後一個問題」)。 – 2015-02-09 15:54:42
@EmanuilRusev最近正在根據什麼專欄 - 'id'?或者你有日期時間? – Taryn 2015-02-09 15:54:43