如何将GROUP BY与此数据一起使用

时间:2014-02-14 11:42:37

标签: mysql

我有一个名为links的mysql表,其中包含以下列:

productId, fromUserId, toUserId, createdTimestamp

多个用户可以将同一产品链接到用户。

我想要的是GROUP BY来获取所有'链接'toUserId = <some userId>。 由于1个产品可以多次链接(多行),我希望按productId对输出进行分组。所以要看起来像:

productId1, fromUserId1, fromUserId2, fromUserId3, newestCreatedTimestamp

productId2, fromUserId1, fromUserId2, newestCreatedTimestamp

现在我在应用程序级别对这些行进行分组,因为我不明白如何在mysql中执行此操作。我不是mysql专家,文档不是简单的(我的意见)!

1 个答案:

答案 0 :(得分:1)

您可以使用GROUP_CONCAT aggregator function将所有fromUserId条目包含在一行中。这将生成与该fromUserId相关联的所有GROUP BY条目的逗号分隔列表。

SELECT `productId`, 
       `toUserId`, 
       GROUP_CONCAT( `fromUserId` ) AS `fromUserIds`
       MAX( `createdTimestamp`) AS `timestamp`
FROM `links`
GROUP BY `productId`, `toUserId`

根据以下评论插入MAX()