mysql对数据进行分组和行计数

ovfsdjhp  于 2021-06-20  发布在  Mysql
关注(0)|答案(1)|浏览(690)

我有一个表格,里面有各种各样的数据。我想要实现的是在数据库中运行一个查询,查找数量相等且内容相同的行,比如说column的id为1,有3行,column的id为5,有3行,所有这些值都是相同的。我想把它作为一个整体来考虑,然后计算他们有多少人。具有不同ID但值相同的行。然后有一个表,显示找到x个匹配项的计数,并包含this+this+this值。这是在mysql中

id  |  drug
--------------
1   | LAMIVUDINE
----------------
1   | ZIDOVUDINE
----------------
1   | 3TC
----------------
3   | TTC
-------------
4   | KKY
------------
4   | JJ2
-------------
4   | FFF
---------------
5   | LAMIVUDINE
----------------
5   | ZIDOVUDINE 
-----------------
5   | 3TC
------------------
8   | KKY
----------------
8   | JJ2
--------------
8   | FFF
---------------

计数(id)为数字
药物名称

number |  name
-------------------------------------
2      | LAMIVUDINE + ZIDOVUDINE + 3TC
---------------------------------------
2      | KKY + JJ2 + FFF
--------------------------------------`
1      | TTC
---------------------------------------
sqougxex

sqougxex1#

你可以用 group_concat 用一个 + 分隔符,用于连接具有相同id的行,然后对连接的值执行另一个分组,以获得所需的输出

select count(*) number, names
from (
    select count(*) total, group_concat(drug order by drug separator '+') names
    from table1
    group by id
) t 
group by names

演示
ORDERBY子句在GROUPBY中很重要,因此串联的字符串值应该具有相同的顺序

相关问题