只选择不同的"名称"并按"最新日期"排序

R_U*_*ser 0 mysql sql join inner-join

我使用MySQL数据库来管理组织的捐款.捐赠者可以捐赠多份捐款.因此,我有两个表:donators包含有关捐赠者的信息,并donations包含有关捐赠时间和金额的信息.两个表都通过a连接donatorID.

我想读出有关每个不同捐赠者的信息.该清单应按上次捐赠日期排序.我想出了下面的代码,但是它使用了第一次捐赠的日期而不是最后一次捐赠.

如何为每位捐赠者使用最新的捐赠日期?

SELECT
    DISTINCT(`donators`.`name`),
    `donators`.`city`,
    `donators`.`country`,
    `donators`.`website`
FROM
    `donators`
INNER JOIN
    `donations`
ON
    `donators`.`donatorID` = `donations`.`donatorID`
ORDER BY `donations`.`date` DESC
Run Code Online (Sandbox Code Playgroud)

Joh*_*Woo 5

SELECT  a.*, b.max_DATE
FROM    Donators a
        INNER JOIN
        (
            SELECT  DonatorID, MAX(date) max_DATE
            FROM    Donations
            GROUP   BY DonatorID
        ) b ON a.DonatorID = b.DonatorID
ORDER   BY  b.max_DATE DESC 
Run Code Online (Sandbox Code Playgroud)

如果您想donation根据最新的捐赠日期显示表格记录,

SELECT  a.*, c.*
FROM    Donators a
        INNER JOIN Donations c
            ON a.DonatorID = c.DonatorID
        INNER JOIN
        (
            SELECT  DonatorID, MAX(date) max_DATE
            FROM    Donations
            GROUP   BY DonatorID
        ) b ON  c.DonatorID = b.DonatorID AND
                c.date = b.max_DATE
ORDER   BY c.date DESC  
Run Code Online (Sandbox Code Playgroud)