mysql查询,带count,group by

fsi0uk1n  于 2021-06-23  发布在  Mysql
关注(0)|答案(5)|浏览(428)

表:统计

id | user  | Message
----------------------
1  | user1  |message1 
2  | user2  |message2
3  | user1  |message3

我能够找到每个用户使用此查询发送的邮件数。

select user, count(*) from statistics group by user;

如何显示消息列数据和计数?例如

user | count | message
------------------------
user1| 2     |message1
             |message3
user2| 1     |message2
i2byvkas

i2byvkas1#

使用组\u concat

select user, count(0) as ct,group_concat(Message) from statistics group by user;

这将为您提供csv格式的消息
注意:在mysql中,groupconcat的默认大小限制为1024个字符。
对于utf,它转到1024/3和utfmb4 255(1024/4)。
您可以使用group\u concat\u max\u len全局变量根据需要设置其最大长度,但要考虑生产环境中的内存因素

SET group_concat_max_len=100000000

更新:
您可以使用组\u concat中的任何分隔符

Group_concat(Message SEPARATOR '----')
6kkfgxo0

6kkfgxo02#

尝试使用自联接进行分组:

select s1.user, s2.cnt, s1.message
from statistics s1
join (
  select user, count(*) cnt
  from statistics
  group by user
) s2 on s1.user = s2.user
xa9qqrwz

xa9qqrwz3#

select user, count(*) as 'total' , group_concat(message) from statistics group by user;
tpxzln5u

tpxzln5u4#

你可以的 join 你的研究结果 group by 整张table(反之亦然)?
或者,根据你想要什么,你可以用 group_concat() 使用 \n 作为分隔符。

f2uvfpb9

f2uvfpb95#

你好像想表现出来 Countuser ,其中 message 发送人 user .
如果你的mysql版本不支持窗口函数,你可以通过子查询来实现 row_number 在“选择子查询”中,然后仅显示 rn=1 用户和计数

CREATE TABLE T(
   id INT,
    user VARCHAR(50),
  Message VARCHAR(100)
);

INSERT INTO T VALUES(1,'user1'  ,'message1'); 
INSERT INTO T VALUES(2,'user2'  ,'message2');
INSERT INTO T VALUES(3,'user1'  ,'message3');

查询1:

SELECT (case when rn = 1 then user else '' end) 'users',
       (case when rn = 1 then cnt else '' end) 'count',
       message
FROM (
  select 
      t1.user, 
      t2.cnt, 
      t1.message,
      (SELECT COUNT(*) from t tt WHERE tt.user = t1.user and t1.id >= tt.id) rn
  from T t1
  join (
    select user, count(*) cnt
    from T
    group by user
  ) t2 on t1.user = t2.user
) t1
order by user,message

结果:

| users | count |  message |
|-------|-------|----------|
| user1 |     2 | message1 |
|       |       | message3 |
| user2 |     1 | message2 |

相关问题