我有一个名为links
的mysql表,其中包含以下列:
productId, fromUserId, toUserId, createdTimestamp
多个用户可以将同一产品链接到用户。
我想要的是GROUP BY
来获取所有'链接'toUserId = <some userId>
。
由于1个产品可以多次链接(多行),我希望按productId
对输出进行分组。所以要看起来像:
productId1, fromUserId1, fromUserId2, fromUserId3, newestCreatedTimestamp
productId2, fromUserId1, fromUserId2, newestCreatedTimestamp
现在我在应用程序级别对这些行进行分组,因为我不明白如何在mysql中执行此操作。我不是mysql专家,文档不是简单的(我的意见)!
答案 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()
。