这样的数据,我要去重复得到疾病的所有
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));
}