如果值为 GROUP_CONCAT 行

Posted

技术标签:

【中文标题】如果值为 GROUP_CONCAT 行【英文标题】:GROUP_CONCAT row if values 【发布时间】:2017-06-13 01:53:15 【问题描述】:

我需要计算表中的记录,但我必须将 pId 55 和 61 的值视为一个值,前提是 user_id 相同。

id     pId  user_id

6126    55  127742
6128    55  127584
6132    58  128788
6134    55  54445
6136    55  127897
6139    61  127584



select id, pId, user_id, count(1),
    from table
    where date >= '2017-01-19 00:00:00' AND date < '2017-01-20 00:00:00'
    group by user_id
    ;

【问题讨论】:

不太明白。根据您的样本数据,最终结果应该是什么?你的请求和group_concat有什么关系? 我想计算行数。最终结果应该是 9 行而不是 10 行,因为 ID 为 6128 的行与 6139 行具有相同的 user_id 并且 pIds 是 55 和 61。当相同的 user_id 是时,我只需将 55 和 61 组合起来展示。编辑样本数据。 见meta.***.com/questions/333952/… 【参考方案1】:

创建另一个表,将 61 替换为 55。现在计算您要计算的任何内容。

select a.user_id, count(distinct a.pid_user_id)
    from (select id, 
     concat(if(pid = 61, 55, pid) , '_', user_id) as pid_user_id, 
     user_id
     from table
     where date >= '2017-01-19 00:00:00' AND date < '2017-01-20 00:00:00') as a
group by a.user_id;

【讨论】:

以上是关于如果值为 GROUP_CONCAT 行的主要内容,如果未能解决你的问题,请参考以下文章

MySQL的concat以及group_concat的用法

使用 HAVING GROUP_CONCAT 计算记录行

Mysql concat() group_concat()用法

MySQL教程之concat以及group_concat的用法

MySQL UPDATE 与 GROUP_CONCAT 加入三个表

MySQL中concat以及group_concat的使用