我有這個SQL表Messages
其中相關的條目是sender
,,timestamp
和text
。因此,例如一些例子是如何獲取最近創建的行,其中幾列中的某一列具有特定值?
sender recipient text timestamp
user1 user2 hey 1
user2 user1 hello back 2
user1 user3 hey other dude 3
而爲了填充像iMessage
例如圖。我需要一個SQL查詢,用於給定用戶獲取用戶正在進行的每個對話中最近的消息。所以,目前我有什麼是
SELECT *
FROM Messages m
WHERE m.timestamp IN (SELECT MAX(m2.timestamp)
FROM Messages m2
WHERE m.sender = :user OR m.recipient = :user
GROUP BY sender, recipient)
但不幸的是這個查詢返回的信息的全部3個以上因爲嵌套選擇組前兩個,即使他們都在同一個會話是分開。有沒有一種簡單的方法來表達我真正想要的SQL,最好是不創建Conversations表並進行某種連接業務?
簡單查詢?沒有不是真的。對話表將是一個好主意。否則[請參閱我的答案](http://stackoverflow.com/questions/29799891/finding-latest-message-from-table-grouped-by-user-in-mysql/29800974#29800974)。它基本上是同一個問題 –
什麼是「id」?我認爲這是你的消息PK,你忘了它在你的表結構中)。 –
這是MySQL,對吧? – Strawberry