用php开发的网站要实现查询并排名的功能,排名含有并列的,要如何实现???希望高手帮助
解决方案 »
- 【远程下载】打开远程主机出错!内容为非文本类型或网址重定向! php_network_getaddresses: getaddrinfo failed: 不知道
- php 怎样获取当前客户端登陆用户的用户名
- 求一个随机数的算法
- 新浪授权OAUTH2.0回调页面callback为什么只能是一个页面!!!
- 求一个抓取网页的正则
- 近段时间,我的独立服务器常被黑,求高手指点!
- 一个带有效期的积分系统设计
- TP里面的Upload类的疑问
- php中出现Notice: Undefined index: HTTP_RAW_POST_DATA in D:\Program Files
- 求助,合同协议后台可以动态实时跟新,怎么弄
- dedecms数据库调用
- 关于discuz查询的一个问题,希望高手们指点一下哦。
这样不就行了,条件组合
这个功能就和搜索引擎功能一样,说起来简单,实现起来应该还是复杂的。
你的这个需求和搜索引擎只差一个蜘蛛来爬数据了。
序 列 列
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,赋序的值
不过这种需求没做过,不知道效率怎样
是为了,统计A之前,基数是多少,那么A就是前面的基数+1
set @t:=0;
set @p:=0;
SELECT @p:=if(@t<>排序字段, @p+1,@p), @t:=if(@t<>排序字段,排序字段,@t) FROM `tbl_name` order by 排序字段
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);