Mysql仅从最新日期中选择不同的记录

Sam*_*pta 3 mysql distinct

这是我的桌面结构 -

TABLE : COURSE_LOG

-----------------------------------------------------
|   ID   |   USERNAME   |  COURSE_ID   |    LDATE   |
-----------------------------------------------------
|   1    |     user1    |      22      | 2013-06-01 |
-----------------------------------------------------
|   2    |     user1    |      54      | 2013-06-03 |
-----------------------------------------------------
|   3    |     user1    |      22      | 2013-06-03 |
-----------------------------------------------------
|   4    |     user2    |      71      | 2013-06-04 |
-----------------------------------------------------
Run Code Online (Sandbox Code Playgroud)

我想选择所有user1COURSE_ID数据明显(连同它的日期).由于日期将在两个相同的COURSE_ID条目之间变化,我想选择具有更近期日期的行.我希望得到这样的结果 -

-----------------------------
|  COURSE_ID   |    LDATE   |
-----------------------------
|      54      | 2013-06-03 |
-----------------------------
|      22      | 2013-06-03 |
-----------------------------
|      71      | 2013-06-04 |
-----------------------------
Run Code Online (Sandbox Code Playgroud)

我不想要这个 -

-----------------------------    
|      22      | 2013-06-01 |    // THIS SHOULD BE OMITTED FROM RESULT BECAUSE THERE
-----------------------------    // IS ANOTHER RECENT ENTRY WITH THE SAME COURSE_ID
Run Code Online (Sandbox Code Playgroud)

我正在使用此查询 -

SELECT DISTINCT(COURSE_ID), LDATE FROM COURSE_LOG
WHERE USERNAME = 'user1' 
AND LDATE = (
    SELECT LDATE 
    FROM COURSE_LOG
    WHERE USERNAME = 'user1' 
    ORDER BY LDATE DESC 
    LIMIT 1
)
Run Code Online (Sandbox Code Playgroud)

但它只选择了一排.我该如何纠正?

Meh*_*zad 17

试试这个查询

如果您只想user1使用此查询:

select username, course_id, max(ldate) as date
from tbl 
where username='user1'
group by course_id
Run Code Online (Sandbox Code Playgroud)

SQL FIDDLE

| USERNAME | COURSE_ID |       DATE |
-------------------------------------
|    user1 |        22 | 2013-06-03 |
|    user1 |        54 | 2013-06-03 |
Run Code Online (Sandbox Code Playgroud)

如果要查找所有用户的最新日期,请使用此查询

select username, course_id, max(ldate) as date
from tbl 
group by username, course_id
Run Code Online (Sandbox Code Playgroud)

在此查询数据中user2也将包括在内

| USERNAME | COURSE_ID |       DATE |
-------------------------------------
|    user1 |        22 | 2013-06-03 |
|    user1 |        54 | 2013-06-03 |
|    user2 |        71 | 2013-06-04 |
Run Code Online (Sandbox Code Playgroud)