原语句是
select * from News where ViewState='yes'order by AddDate desc", NewsView按照加入时间倒序列排列显示新闻现在在News表内加了一个tj的字段,要实现如果tj='yes'的话,则优先显示,显示完所有tj='yes'的新闻后,再接着显示tj=null的新闻;这句SQL语句该怎么改??谢谢帮忙

解决方案 »

  1.   

    简单,如果多字段排序实现不了,就用Union呗,分开查然后合起来!
      

  2.   


    select * from News where ViewState='yes' 
    order by AddDate desc,NewsView,case when tj='yes' then 0 when tj is null then 1 else 2 end
      

  3.   

    谢谢楼上两位 我很菜,没用过Uiion,不知道可以给个例子学习一下? boblaw ,您给的语句case when tj='yes' then 0 when tj is null then 1 else 2 end这部分不太明白,能否解释一下,不胜感激趁这会时间,我先去翻翻书
      

  4.   

    相当于C#的switch或者vb的select case语句
    意义就是:如果tj的值为'yes',则结果为0,如果tj为空,则为1,其他为2,按照这个结果排序,默认为升序,会按0,1,2来排,所以tj为yes的会显示在最前面,为null的其次,其它居后。
      

  5.   

    select * from News where ViewState='yes' 
    order by tj desc, AddDate desc,NewsView
      

  6.   

    elect   *   from   News   where   ViewState='yes'order   by   AddDate   desc,tj asc/desc(具体的你自己测试一下)
      

  7.   

    select * from News where ViewState='yes' 
    order by tj desc, AddDate desc,NewsView
      

  8.   

    select * from News where ViewState='yes'order by tj asc/desc(具体的你自己测试一下),AddDate desc
      

  9.   

    to:楼上各位
    使用order by tj asc是肯定不行的。
    使用order by tj desc也不一定行,因为tj的不一定只有yes和null值,比如说如果有no,那么会按照yes,no,null的顺序来显示,显然不符合
      

  10.   

    谢谢帮忙的朋友 用fcuandy 提供的方法解决了 原来还可以这么简单的多重排序结贴
      

  11.   

    不好意思,把5L和7L看成一个人了,原来是fcuandy先给的方法, 
    本来想加分给大家的,结果提示帖子未超过5天不能加分只好给帮忙的朋友送上点小分不成敬意
      

  12.   

    to:楼上各位 
    使用order   by   tj   asc是肯定不行的。 
    使用order   by   tj   desc也不一定行,因为tj的不一定只有yes和null值,比如说如果有no,那么会按照yes,no,null的顺序来显示,显然不符合
    -----------------------------------------你的考滤很有道理.
    但很显然楼主的数据没有经过格式化,null表示的就是no的情况.