2012-01-10 9 views
1

私は一意のuser_idのために最新のdatetimeを作成しようとしています。私は以下のクエリを持っていますが、それは動作していないようです....それは最新の作成時間を取得していません。最新のユニークなユーザチャットが動作しない

SELECT * FROM `chats` 
WHERE receiver_id = 1 
GROUP BY user_id 
ORDER BY created DESC 

理由はありますか?

UPDATE:

は、実際に私は私の答え自分自身を発見しました。下記をご覧ください。ネストされた検索とフィルタリングされた結果テーブルのINNER JOINを使用し、次にその結果のwhere句を使用して、そのテーブルに参加して必要なデータを取得する必要がありました。

SELECT c.*, users.username 
FROM chats c 
INNER JOIN( 
SELECT MAX(created) AS Date, user_id, receiver_id, chat, type, id 
FROM chats 
WHERE receiver_id = 1 
GROUP BY user_id) cc ON cc.Date = c.created AND cc.user_id = c.user_id 
LEFT JOIN users ON users.id = c.user_id 
WHERE c.receiver_id = 1 
+0

ここにテーブル構造を投稿したいと思うかもしれません。 –

+0

あなたの問題についての詳しい情報を教えていただけますか?たとえば、チャットテーブルの構造と、おそらくそのテーブルのサンプルデータがあります。 – Diego

答えて

0

あなたはMAX集計関数を使用する必要があります -

SELECT user_id, MAX(created) latest_datetime FROM chats 
GROUP BY user_id; 

このクエリを試してみてください、それはすべてのユーザーと、最新の作成日時が表示されます。

+0

残念ながらそれはうまくいかなかった...とにかくありがとう。 –

+0

これは、グループ化および集約フィールドを表示する必要がある場合にのみ機能します。それ以外の場合は、他のフィールドを表示するときは、質問に書いたように、グループ単位のクエリを使用する必要があります。 – Devart

関連する問題