3

私は Mysql 式が苦手なので、理解を深めるために簡単な質問をします。ユーザーが最後のエントリを取得できるように、 GROUP BY式の順序を逆にしたいと考えています。

インターネットで良い例を見つけることができましたが、エラーを受け取ることなく表現でそれらを実装することはできませんでした。みんなありがとう!

SELECT messages.conv, messages.from_user, messages.to_user,
        messages.content, messages.date_posted, messages.note_read,
        messages.active, users.thumb, users.name, users.id
FROM `messages` 
INNER JOIN `users` 
    ON messages.from_user = users.id 
WHERE messages.from_user = 1 
    OR messages.to_user = 1 
GROUP BY messages.conv 
ORDER BY date_posted ASC
4

1 に答える 1

4

編集:私はどうやらあなたの要件を誤解しているようです.あなたの現在のクエリはGROUP BY、集計がないために疑似乱数行を返します.あなたが望むのは、各会話の最後の行です.主キーと呼ばれる);messagesusersid

SELECT messages.conv, messages.from_user, messages.to_user,
       messages.content, messages.date_posted, 
       messages.note_read, messages.active, users.thumb, 
       users.name, users.id FROM  `messages` 
INNER JOIN  `users` 
       ON messages.from_user = users.id 
WHERE messages.id IN
      (SELECT MAX(id) FROM messages 
       WHERE messages.from_user = 1 OR messages.to_user = 1 
       GROUP BY conv);

ここで SQLFiddle

于 2012-09-16T08:23:08.067 に答える