mysql获取一列的不重复所有列

这样的数据,我要去重复得到疾病的所有

SELECT 
cc.bbb
from 
(

SELECT 
    SUBSTRING_INDEX(SUBSTRING_INDEX((select group_concat(physical_condition) from elder),',',help_topic_id+1),',',-1) AS bbb
FROM 
    mysql.help_topic 
WHERE 
    help_topic_id < LENGTH((select group_concat(physical_condition) from elder))-LENGTH(REPLACE((select group_concat(physical_condition) from elder),',',''))+1
        
) cc
where cc.bbb != ''
 GROUP BY  bbb

 

发现少了 是长度问题

执行这个后 在运行上面的sql 完成
SET GLOBAL group_concat_max_len=10240000;
SET SESSION group_concat_max_len=10240000;

结果:

还有java解决办法:

List<String> disease = elderMapper.selectAllDisease();
		
Map<String,Integer> stats = new HashMap<String,Integer>();
for(String row : disease){
			String[] temps = row.split(",");
			for(String temp : temps){
				if(stats.containsKey(temp))
					stats.put(temp,stats.get(temp) + 1);
				else
					stats.put(temp,1);
			}
}
		
List<Map.Entry<String, Integer>> list = new ArrayList<Map.Entry<String, Integer>>(stats.entrySet());
        Collections.sort(list, new Comparator<Map.Entry<String, Integer>>() {
            // 降序排序
            public int compare(Entry<String, Integer> o1, Entry<String, Integer> o2) {
                return -o1.getValue().compareTo(o2.getValue());
            }
});
		
for(String d : stats.keySet()){
	System.out.println(d + "--" + stats.get(d));
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值