Webアプリケーション内でユーザーチャットを開発しています。ログインしたユーザーと他のユーザーとのチャット履歴を表示するMySQLクエリ
ゴール:ログインしたユーザーがチャットを行ったユーザーのリストと、そのようなユーザーの近くにある最後のメッセージ(そのユーザーまたはログインしているユーザーのいずれかによって書き込まれたもの)。
現在のMySQLのクエリ:よく
SELECT id,
user_to,
user_from,
body,
msg_time
FROM chat
WHERE id IN (SELECT MAX(id)
FROM chat WHERE user_to=:id
OR user_from=:id
GROUP BY user_to,user_from)
ORDER BY msg_time DESC
作品。しかし!任意のユーザBとの任意のユーザAのチャットに対して、現在のリクエストは、ユーザAがユーザBに送信した最新のメッセージとユーザBがユーザAに送信した最新のメッセージの2行を表示する。 「行」の下では、データのブートストラップ行を意味します。列1はチャットが行われるユーザーのアイコンであり、列2は2人のユーザー間の最新のメッセージで、列3は最後のメッセージの時刻です。
しかし、要求がそのユーザーAとユーザーBがチャットしていた表示されるはず、とだけそれの上に私の脳を吹き、ユーザーAとB
の間に作られた最新のメッセージで、一度これを表示します。私は質問を短くしておきたいと思います。私は近くにいますが、最終的にこの問題を解決することはできません。アドバイスありがとう!
試しのようなものを追加する 'とuser_to>対称性を破る内側のクエリでuser_from' –