dqr91899 2016-06-27 10:30
浏览 39
已采纳

如何使用mysql中的count函数选项逐行分隔行值

Mysql Table: In My facility table is this

      facility_name                                  mbid           date         
     yoga,aerobics,table tennis,tai chi,            OM1111         2016-06-12
     aerobics,tai chi,                              OM1111         2016-06-12

How to split row value one by one with mbid in mysql:

     Facility_name              mbid        Number of count
        yoga                    OM1111         1
      aerobics                  OM1111         2
      table tennis              OM1111         1
      tai chi                   OM1111         2
  • 写回答

2条回答 默认 最新

  • duanquan1243 2016-06-27 10:44
    关注
    CREATE TABLE facility 
        (facility_name varchar(35), mbid varchar(6), date varchar(10))
    ;
    
    INSERT INTO facility 
        (facility_name, mbid, date)
    VALUES
        ('yoga,aerobics,table tennis,tai chi,', 'OM1111', '2016-06-12'),
        ('aerobics,tai chi,', 'OM1111', '2016-06-12')
    ;
    

    Script :

    Select T.VALUE,T.mbid,COUNT(T.VALUE)Cnt FROM (
    SELECT SUBSTRING_INDEX(SUBSTRING_INDEX(t.facility_name, ',', n.n), ',', -1) value,mbid
      FROM facility  t CROSS JOIN 
    (
       SELECT a.N + b.N * 10 + 1 n
         FROM 
        (SELECT 0 AS N UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) a
       ,(SELECT 0 AS N UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) b
        ORDER BY n
    ) n
     WHERE n.n <= 1 + (LENGTH(t.facility_name) - LENGTH(REPLACE(t.facility_name, ',', ''))))T
     WHERE T.VALUE <> ''
     GROUP BY T.VALUE,T.mbid
     ORDER BY T.value
    

    How to pass the date function in where condition to get count of activity :

     Select    facility.mbid,membership.name,membership.organization,
     membership.designation,membership.division, facility.VALUE `Facility Name`,
     COUNT(facility.VALUE)`Number of Activite` FROM ( SELECT SUBSTRING_INDEX(SUBSTRING_INDEX(facility.facility_name, ',', n.n), ',', -1) value,mbid FROM facility  CROSS JOIN 
    (
       SELECT a.N + b.N * 10 + 1 n
         FROM 
        (SELECT 0 AS N UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) a
       ,(SELECT 0 AS N UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) b
        ORDER BY n
    ) n
     WHERE n.n <= 1 + (LENGTH(facility.facility_name) -LENGTH(REPLACE(facility.facility_name, ',', ''))))T
     facility Inner Join  membership ON facility.mbid=membership.mbid 
    where facility.date Between '2016-06-04' and '2016-06-07' &&  
       facility.VALUE <> '' 
       GROUP BY facility.VALUE,facility.mbid ORDER BY facility.value
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 Llama如何调用shell或者Python
  • ¥20 eclipse连接sap后代码跑出来空白
  • ¥20 谁能帮我挨个解读这个php语言编的代码什么意思?
  • ¥15 win10权限管理,限制普通用户使用删除功能
  • ¥15 minnio内存占用过大,内存没被回收(Windows环境)
  • ¥65 抖音咸鱼付款链接转码支付宝
  • ¥15 ubuntu22.04上安装ursim-3.15.8.106339遇到的问题
  • ¥15 blast算法(相关搜索:数据库)
  • ¥15 请问有人会紧聚焦相关的matlab知识嘛?
  • ¥15 网络通信安全解决方案