这是我的表格,描述了用户在某个时间购买了一些物品。
time, user, item_id
我的数据:
100, u1, i1
150, u2, i2
200, u1, i2
300, u1, i3
450, u2, i5
我想要的结果是每个用户按时间购买的商品:
u1, [i1, i2, i3]
u2, [i2, i5]
是否有可以执行此操作的SQL查询?如果没有,是否有适合此要求的其他类型的数据库?考虑到数据量可能很大,哪种解决方案可以具有最佳性能?
谢谢!
是的,有一些SQL查询可以做到这一点,例如在MYSQL中,您可以使用GROUP_CONCAT
可以满足您的要求。
SELECT USER, GROUP_CONCAT(DISTINCT item_id ORDER BY time SEPARATOR ',')
FROM Table
如果使用 SQL SERVER(TSQL(,请尝试此操作。
SELECT [user],
abc =
STUFF((SELECT
',' +item_id
FROM @tblName Where A.[user] = [user]
FOR XML PATH('')), 1, 1, ''
)
FROM @tblName A GROUP by [user]