有一个类似大众点评那样的系统,用户对一家店会打分,并有一段文本的评语
现在希望每个店的点评,排序顺序是打分比较高,同时文字长度比较长的如果用order by score DESC,length DESC  这样的写法,只会优先按照一个字段来排序。可能第一个点评打分是最高,但是长度又是最小的有什么办法能够兼顾呢?

解决方案 »

  1.   

    order by case when score》50 then 1 else 0 DESC,length DESC
      

  2.   

     (不要高估你的汉语表达能力或者我的汉语理解能力)
       建议你列出你的表结构,并提供测试数据以及基于这些测试数据的所对应正确结果。
       参考一下这个贴子的提问方式http://topic.csdn.net/u/20091130/20/8343ee6a-417c-4c2d-9415-fa46604a00cf.html
       
       1. 你的 create table xxx .. 语句
       2. 你的 insert into xxx ... 语句
       3. 结果是什么样,(并给以简单的算法描述)
       4. 你用的数据库名称和版本(经常有人在MS SQL server版问 MySQL)
       
       这样想帮你的人可以直接搭建和你相同的环境,并在给出方案前进行测试,避免文字描述理解上的误差。   
      

  3.   

    order by score DESC,length DESC先按评分排序,然后再按长度排序。
    评分  长度
    9     10
    9     20
    8     30
    7     60得到的结果是
    9     20
    9     10
    8     30
    7     60
      

  4.   

    你增加一个权值列,然后通过评分和长度算出权值,然后在对权值排序。在表的insert update中写上触发器,当评分或者长度发生变化时动态的更改的权值。
      

  5.   

    lz是嫌order by 评分,长度
    这种方式评分过于暴力
      

  6.   

    select * from (
    select *,0+评分+length(长度) as px from tt) a
    order by px