1

すでにstackoverflowで検索しましたが、既存のスレッドは役に立たなかったので、これを投稿します。

私のデータベーススキーマ:

user: user_id, displayname
message: id, sender_id, receiver_id, message, dateSent

私が欲しいもの:

各ユーザーからの最新のメッセージのリストを表示します WHERE receiver_id = 4

私がすでに試したこと:

MYSQLテーブル クエリから最新の投稿を選択して、すべてのユーザーからのみ最後のメッセージを取得します

まだ私の問題を解決できません:(

4

3 に答える 3

3

これを試して:

SELECT
  u1.displayname AS SenderName,
  m.date_sent,
  ...
FROM messages AS m1
INNER JOIN users AS u1 ON m1.sender_id = u1.id
(
   SELECT sender_id, MAX(dateSent) MaxDate
   FROM messages 
   GROUP BY sender_id
   WHERE receiver_id = 4
) AS m2  ON m1.sender_id = m2.sender_id
        AND m1.datesent  = m2.maxdate
于 2013-05-20T11:35:04.280 に答える
0
SELECT u.user_id、u.displayname、m.message
FROM ユーザー u
内部結合
(SELECT id、sender_id、receiver_id、メッセージ、MAX(dateSent) AS mdate
FROM メッセージ msg
WHERE receiver_id = 4
GROUP BY sender_id
) m として
ON u.user_id = m.sender_id AND u.dateSent = m.mdate

HTH

于 2013-05-20T11:46:02.987 に答える