很复杂啊,用存储过程也不一定能实现吧?还是需要程序语言的支持啊。
我认为应该建立一个2维数组,保存出现的词和出现的次数。每查询一次就在数组内寻找是否已经存在这个词,如果存在就将这个词对应的次数加1,不存在就在数组里添加一个词,最后的结果就是排序后的数组。
我认为应该建立一个2维数组,保存出现的词和出现的次数。每查询一次就在数组内寻找是否已经存在这个词,如果存在就将这个词对应的次数加1,不存在就在数组里添加一个词,最后的结果就是排序后的数组。
1.用SELECT查询每条记录,得到keys字段的值,用EXPLODE函数用","分隔组成数组,再把这个数组WHILE循环插入到一个表A里字段id,city;
2.用DISTINCT(city)查询表A,得到出现的城市,并插入到表B字段id,only_city,countdot
3.用B表里的only_city作为查询条件查询A表里出现的城市,再count(*)这些城市出现的值,到表B更新countdot字段; 查询这个B表的值就是楼主需要的显示结果;
或者第2步,第3步直接用array_count_values()涵数得到相应的城市及改城市出现的次数;由于没有仔细研究,突发其想,呵呵,本人的方法并不是最好的,太烦了,只能请楼主参考下思路,或许对你有所帮助;请高手指教...
要么改表结构。否则就算写出存储过程来,速度也不能接受