从表中为每种请求类型选择不同的user_id

时间:2012-05-15 19:54:59

标签: mysql join subquery

我有一个包含4列的表格:

IDUSER_IDSOURCECREATED_DATE

在该表中有以下数据:

ID  USER_ID SOURCE          CREATED_DATE
1   25      PURCHASE        2012-01-01 12:30:00
2   26      PLEDGE          2012-01-01 12:40:00
3   25      PLEDGE          2012-01-01 12:50:00
4   25      PURCHASE        2012-01-14 12:00:00

现在你可以看到,我有4行数据和两个唯一用户。用户(25)进行了3次交易(两次购买和一次质押),用户(26次)进行了一次交易 - (一次质押)

这是我想要实现的目标:

我需要从此表中选择所有事务,但我想为每个REQUEST TYPE(源)选择一个UNIQUE用户,该行必须是EARLIEST TRANSACTION。

我的预期结果数据是:

ID  USER_ID SOURCE          CREATED_DATE
1   25      PURCHASE        2012-01-01 12:30:00
2   26      PLEDGE          2012-01-01 12:40:00
3   25      PLEDGE          2012-01-01 12:00:00

用户(25)进行了两次购买(一次在2012-01-01,另一次在2012-01-14) - 第一次是返回的。

这是我到目前为止提出的SQL:

    SELECT 
        Supporter.user_id,
        MIN(Supporter.created) as created,
        Supporter.*,
        Supporter.source
    FROM
        supporters AS Supporter

    GROUP BY Supporter.source
    ORDER BY Supporter.created ASC

现在,这让我非常接近,除了它只选择一个用户ID(一个有两个项目 - 承诺和购买)。如果我能弄清楚如何选择两个用户的数据,那就是我需要做的!任何人都可以在这里看到我可能做错了什么,或者丢失了吗?

1 个答案:

答案 0 :(得分:1)

您需要按来源和用户ID进行分组

像这样的东西

SELECT 
    Supporter.user_id,
    MIN(Supporter.created) as created,
    Supporter.*,
    Supporter.source
FROM
    supporters AS Supporter

GROUP BY Supporter.user_id, Supporter.source
ORDER BY Supporter.created ASC