首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL GROUP BY问题

MySQL GROUP BY问题
EN

Stack Overflow用户
提问于 2014-03-02 20:30:28
回答 3查看 44关注 0票数 0

我正在尝试构建一个SQL查询,它应该列出所有用户的活动,而不是求和或其他任何东西,只列出所执行的每个活动的完整列表。

我遇到的问题是,我似乎不能通过工作来获得组,以便将每个用户的活动打印出来。

SQLFiddle = http://sqlfiddle.com/#!2/5dce6/2

最后,我将构建这个JSON对象:

代码语言:javascript
复制
users: [{
    userid: '1', 
    name: 'John',
    activities: [{
       activity_typeid: 6431,
       time: "2013-01-01 00:00:00",
       activity_weight: 20
      }, {
       activity_typeid: 6431,
       time: "2013-01-01 00:00:00",
       activity_weight: 20
    }]
}, {
    userid: '2', 
    name: Peter',
    activities: [{
       activity_typeid: 6431,
       time: "2013-01-01 00:00:00",
       activity_weight: 20
      }
    }]
}]    

SQL:

代码语言:javascript
复制
SELECT activity_typeid, userid, time, activity_weight, activityname
FROM activity_entries
WHERE competitionid = '52a99783c5d6f'
EN

回答 3

Stack Overflow用户

发布于 2014-03-02 20:33:20

代码语言:javascript
复制
SELECT activity_typeid, userid, time, activity_weight, activityname
FROM activity_entries
WHERE competitionid = '52a99783c5d6f' AND userid = someuserid
票数 0
EN

Stack Overflow用户

发布于 2014-03-02 21:11:06

我认为在这种情况下您不需要GROUP BYORDER BY仍然是有意义的。例如:

代码语言:javascript
复制
SELECT activity_typeid, userid, time, activity_weight, activityname
FROM activity_entries
WHERE competitionid = '52a99783c5d6f'
ORDER BY userid

然后,您可以遍历查询结果。如果当前数据具有与以前数据不同的userid,则创建新的user对象,否则只需将新的activity添加到现有user对象的activities中。

票数 0
EN

Stack Overflow用户

发布于 2014-03-02 21:19:27

我认为你想使用group_concat()

代码语言:javascript
复制
SELECT userid, username, 
       group_concat(concat_ws(',', activity_typeid, time, activity_weight) separator '; ') as activities
FROM activity_entries
WHERE competitionid = '52a99783c5d6f'
GROUP BY userid;

这将把活动放在一个字符串中,每个活动用分号分隔。然后用逗号分隔各个组件。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22127544

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档