如果值为 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
并且 pId
s 是 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()用法
MySQL教程之concat以及group_concat的用法