SELECT *
FROM messages
WHERE message_id IN (SELECT MAX(message_id)
FROM messages
GROUP BY if(sender_id > receiver_id, CONCAT(sender_id, receiver_id), CONCAT(receiver_id, sender_id))
)
私はメッセージが1 t 1(グループなし)の単純なメッセージングシステムを持っています。 2人のユーザーの間で最新のメッセージを取得したいだけです。MySQLは2人の間で最新のメッセージを取得します
上記の「動作しますが、最新のものを得るためにmax timestamp vs message_idを使用する必要があると思います。
私のテーブルがある:それは非常に適切ではない場合でも、あなたはここでhaving句を使用することができるし、排除する必要があるよう
Select message_id from messages where sender = x and receiver = y having max (timestamp) group by message_id
感じる:
message_id (unique, auto inc),
sender_id (Primary),
receiver_id (Primary),
time_date,
content
。あなたの元のクエリ(インナー
group by
が除去された異なるcorrelated subquery
を用いて、溶液、ですが、それは。私が取得したいと思い、各ユーザが送信された最新のメッセージを返します。 2人のユーザーの間で最新のメッセージが交換されました。 – ovgansが更新されました。 –