用php开发的网站要实现查询并排名的功能,排名含有并列的,要如何实现???希望高手帮助

解决方案 »

  1.   

    select * from table (where filed = 'xxx') order by yyy, zzz
      

  2.   

    select * from table (where filed = 'xxx') order by yyy desc/asc
    这样不就行了,条件组合
      

  3.   

    这个问题不是一两条SQL语句就能解决的。
    这个功能就和搜索引擎功能一样,说起来简单,实现起来应该还是复杂的。
    你的这个需求和搜索引擎只差一个蜘蛛来爬数据了。
      

  4.   

    没理解错的话是不是
    序 列  列
    1  a a ……
    2  a b ……
    2  a b ……
    2  a b ……
    3  b c ……我只能想到先按照列(ASC或DESC)将id【不是序】(A-1)——B的搜出来然后依据同样的规则,将A之前的discount出来,,,,然后判断A-1和A是否并列,循环A——B,赋序的值
      

  5.   

    先按照列(ASC或DESC)第A——第B条的搜出来然后discount  将 A之前的数据排序,我记得BINARY属性的字符串,数据库是可以比较大小的接着循环A——B,分别赋值,这里可能有并列的,稍微注意下
    不过这种需求没做过,不知道效率怎样
      

  6.   

    group by distinct,上面打错了,,,不加班,回去了,搜狗拼音跳出来,我以为就是了,汗
    是为了,统计A之前,基数是多少,那么A就是前面的基数+1
      

  7.   


    set @t:=0;
    set @p:=0;
    SELECT @p:=if(@t<>排序字段, @p+1,@p), @t:=if(@t<>排序字段,排序字段,@t) FROM `tbl_name` order by 排序字段
      

  8.   

    简化一下
    set @t:=0;
    set @p:=0;
    SELECT a, @p:=if(@t<>b, @p+1,@p), @t:=b FROM `tbl` order by b desc结果
    a  @p := if( @t <> b , @p + 1 , @p )  @t := b  
    2 1 55 
    1 2 45 
    4 2 45 
    3 3 30 
    测试数据
    CREATE TABLE `tbl` (
      `a` int(11) DEFAULT NULL,
      `b` int(11) DEFAULT NULL
    ) ENGINE=InnoDB DEFAULT CHARSET=latin1;-- 
    -- 导出表中的数据 `tbl`
    -- INSERT INTO `tbl` (`a`, `b`) VALUES 
    (1, 45),
    (2, 55),
    (3, 30),
    (4, 45);