2016-11-02 9 views
1

で、私は「リフト」と呼ばれるテーブルを持っているユーザーから最新の明確なレコードを選択:私は日付が最新である特定のユーザーからのすべての異なるlift_id年代を選択したいMySQLは最新の日付

----------------------------------------------------- 
| ID | USERNAME | lift_ID | DATE | 
----------------------------------------------------- 
| 1 |  user1 |  0  | 2013-06-01 | 
----------------------------------------------------- 
| 2 |  user1 |  0  | 2013-06-03 | 
----------------------------------------------------- 
| 3 |  user1 |  1  | 2013-06-03 | 
----------------------------------------------------- 
| 4 |  user2 |  0  | 2013-06-04 | 
----------------------------------------------------- 
| 5 |  user2 |  1  | 2013-06-04 | 
----------------------------------------------------- 
| 6 |  user2 |  1  | 2013-06-05 | 
----------------------------------------------------- 
| 7 |  user1 |  2  | 2013-06-03 | 

そのユーザーのlift_id

私はuser1のためにそれを行うだろうなら、私はなるだろう:

----------------------------------------------------- 
| 2 |  user1 |  0  | 2013-06-03 | 
----------------------------------------------------- 
| 3 |  user1 |  1  | 2013-06-03 | 
----------------------------------------------------- 
| 7 |  user1 |  2  | 2013-06-03 | 

私が試してみた:最大日付のすべての異なるリフトのSELECTけどを考慮していない

SELECT * 
    FROM lift l1 
WHERE date` = (
     SELECT MAX(date) 
     FROM lift 
     WHERE l1.lift_id = lift.lift_id) 
      AND username = 'user1' 
     ORDER BY lift_id ASC 
     ) 
; 

を私が望むさまざまなユーザー。

答えて

4

あなたの質問は終了しました。あなたは、サブクエリでの追加の相関句を必要とする:

SELECT l.* 
FROM lift l 
WHERE l.date = (select max(l2.date) 
       from lift l2 
       where l2.lift_id = l.lift_id and 
         l2.username = l.username 
       ) and 
     l.username = 'user1' 
ORDER BY l.lift_id ASC; 
0

あなたはNOT EXISTS()を使用することができます。

SELECT t.* FROM lift t 
WHERE NOT EXISTS(SELECT 1 FROM lift s 
       WHERE s.lift_id = t.lift_id 
        AND s.username = t.username 
        AND s.date > t.date)