Facebookチャットに少し似たチャットアプリケーションを構築しています。ユーザー、会話、メッセージがあります。3つすべてに独自のテーブルがあります。今のところ、特定のユーザーと会話の最新のメッセージを含むすべての会話を取得しようとしています。
このクエリを試してみましたが、実際には1行しか返されませんが、一致する行は他にもあります
SELECT conversations.id as converid,
messages.from as messageauthor,
messages.message as message
FROM conversations INNER JOIN (SELECT * FROM messages
ORDER BY date DESC LIMIT 1) as messages
ON messages.conversationid=conversations.id
WHERE user1=3
OR user2=3
私がするとき、すなわち
SELECT conversations.id as converid,
messages.from as messageauthor
FROM conversations INNER JOIN messages
ON messages.conversationid=conversations.id
WHERE user1=3
OR user2=3
確かにすべての結果が得られ、conveid をチェックすると 3 つの一意の ID が得られるため、少なくとも userid 3 で 3 つの会話が行われます。したがって、トップ クエリも 3 を返す必要があります。理由がわかりません。 1 行のみを返します。limit 1
ネストされたクエリはクエリ全体に影響しますか?
いくつかの指針を楽しみにしています...