SQL检索连接数据的数组

时间:2016-03-27 18:46:44

标签: mysql

我有以下数据库结构:

用户:

command1 | xargs -ls -lA 2>ls.log | command2 | command3

user_activities:

id
name

活动:

user_id
activity_id

我正在尝试编写一个将输出以下内容的Select查询:

id
name

我知道如何分两步完成,但我有很多用户,每个用户选择的活动很重。有没有办法用一个MySQL查询来做到这一点?

1 个答案:

答案 0 :(得分:0)

使用GROUP_CONCAT功能与SEPARATOR选项的解决方案,可让您获取特定用户的所有活动:

SELECT u.id, GROUP_CONCAT( a.id,  "|", a.name
SEPARATOR  ', ' ) AS useractivities
FROM  `users` u
INNER JOIN  `user_activities` ua ON u.id = ua.user_id
INNER JOIN  `activities` a ON a.id = ua.activity_id
GROUP BY u.id

此查询将返回以下状态的结果集:

id | useractivities
------------------------------------
79 | 17|sport
18 | 3|music, 19|outing, 17|sport
.. | ....

然后,在从结果集中获取每一行时,您可以轻松地以逗号(作为分隔符)爆炸(拆分)useractivities字段值,从而获取特定用户的所有活动