2017-12-02 13 views
-1

を持っている私持っている最大session_dateフィールドを選択するために、MAX関数を使用して、次のMySQLクエリ:それでMySQLのSELECT MAXは、他のフィールドは、間違った値

SELECT user_id, MAX(session_date), value 
FROM user_extra 
GROUP BY user_id 

問題は、値フィールドがあるように見えるしないことです正確であれば、他の日付エントリの1つから間違った値のデータを取得しているようです。なぜこれが、どのように私はこれを解決することができます任意のアイデアですか?

答えて

0

MySQLのGROUP BYはちょっと変わったものです。

クエリは、user_idグループごとにMAX(session_date)を返します。ただし、返される値は何も指定されていません。各user_idグループに対してランダムな値が得られます。

あなたは、各user_idのための最大session_dateを持つ行の値をご希望の場合は、別のクエリ、次のようなものが必要になります。値について

SELECT * FROM 
(SELECT user_id, MAX(session_date) AS session_date 
FROM user_extra GROUP BY user_id) AS foo 
JOIN user_extra USING (user_id,session_date) 
+0

何を? –

+0

これは*にあり、*をカラムに置き換えることを自由に感じます... – peufeu

+0

私はそう考えません。*値を含まないテーブルfooからデータを取得します。 –

0
SELECT user_id, MAX(session_date) as date_session, value FROM user_extra GROUP BY user_id 
+0

以外のdate_sessionでは、あなたのコードとは何が違うのか分かりません。それでも同じことをする – Ahmed

関連する問題