如何查询用户从 SQL 或 NoSQL 触发的一系列活动的关系



这是我的表格,描述了用户在某个时间购买了一些物品。

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]

最新更新