很复杂啊,用存储过程也不一定能实现吧?还是需要程序语言的支持啊。
我认为应该建立一个2维数组,保存出现的词和出现的次数。每查询一次就在数组内寻找是否已经存在这个词,如果存在就将这个词对应的次数加1,不存在就在数组里添加一个词,最后的结果就是排序后的数组。

解决方案 »

  1.   

    恩,建多一个匹配表,也就是地区对应的ID吧,这样来做
      

  2.   

    这个问题,好像我也没有碰到过,刚才看了下,不知道以下方法是否可行:可能有点麻烦;
    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()涵数得到相应的城市及改城市出现的次数;由于没有仔细研究,突发其想,呵呵,本人的方法并不是最好的,太烦了,只能请楼主参考下思路,或许对你有所帮助;请高手指教...
      

  3.   

    要么在程序里处理。
    要么改表结构。否则就算写出存储过程来,速度也不能接受