mysql排名问题

RainYang 2006-04-20 03:04:38
表tb
uid mark
1 9
2 5
3 8
4 6

想查出uid=4的名次:
uid mc
4 2
mysql版本4.0.20,好像不能用子查询?哪位帮我看一下,多谢
...全文
517 29 打赏 收藏 转发到动态 举报
写回复
用AI写文章
29 条回复
切换为时间正序
请发表友善的回复…
发表回复
aniude 2006-04-21
  • 打赏
  • 举报
回复
create table tb
(
uid int,
mark int
)
insert into tb select 1,9
union all select 2,5
union all select 3,8
union all select 4,6
select uid,mc=(select count(1) from tb where mark>(select mark from tb where uid=4))
from tb
where uid=4
/*
uid mc
----------- -----------
4 2

(所影响的行数为 1 行)
*/
e_lyf 2006-04-21
  • 打赏
  • 举报
回复
关注
RainYang 2006-04-21
  • 打赏
  • 举报
回复
没办法,另建了汇总表,,,,,郁闷啊
RainYang 2006-04-21
  • 打赏
  • 举报
回复
楼上的兄弟,我的mysql版本是4.0.20,不支持子查询,如果支持那就啥都别说了,唉
kapil 2006-04-20
  • 打赏
  • 举报
回复
最直接的办法:升级到高版本,呵呵,开个玩笑,研究研究 ~~
itian 2006-04-20
  • 打赏
  • 举报
回复
多个insert|update而已,除了多占点空间以外。
RainYang 2006-04-20
  • 打赏
  • 举报
回复
我这个表是需要经常更新的,建立另外表的话代价太大了
itian 2006-04-20
  • 打赏
  • 举报
回复
推荐你建立另外一个表:uid totalmark
就是编号和总分。
RainYang 2006-04-20
  • 打赏
  • 举报
回复
唉,看来只有这一种办法了?如果又几万条记录的话,是不是很慢啊,而且访问量很大
Candy38 2006-04-20
  • 打赏
  • 举报
回复
没想出很好的方法
select uid, sum(mark) as mark1 from table group by uid order by mark1 ASC;
再用循环找出uid=4的位置
itian 2006-04-20
  • 打赏
  • 举报
回复
先求出总和
$query = mysql_query("select uid,sum(mark) as mark from table group by uid order by mark desc");
$mc = 0;
while($res = mysql_fetch_row($query))
{
if($res['uid'] != 4) $mc++;
else break;
}

echo $mc;
RainYang 2006-04-20
  • 打赏
  • 举报
回复
我顶
RainYang 2006-04-20
  • 打赏
  • 举报
回复
是呀
itian 2006-04-20
  • 打赏
  • 举报
回复
不知道uid=4的总分是不是8+1+3?
RainYang 2006-04-20
  • 打赏
  • 举报
回复
用程序实现也可以,不过得找个效率高的,不知道怎么弄?多谢各位帮我想想办法
RainYang 2006-04-20
  • 打赏
  • 举报
回复
mark也是group by 出来的,select count(id) where mark>uid这种也不行。
正常数据应该是
uid mark
1 7
1 6
2 3
2 2
2 5
3 4
3 3
4 8
4 1
4 3
我就是想查uid=4的总分的排名
iasky 2006-04-20
  • 打赏
  • 举报
回复
4.0不支持子查询,没有办法,至少两次查询阿

wasuka(被奴役的食尸鬼) 说的对,可以用conut,如果只查一个uid的mc
RainYang 2006-04-20
  • 打赏
  • 举报
回复
to:itian(没有靠背的椅) ,没看懂你什么意思,我就是想查uid=4的排名是第几,不能查吗?是sqlserver的话,一个子查询,很简单就出来了
itian 2006-04-20
  • 打赏
  • 举报
回复
iasky(C#_ASP_PHP)的方法还算可行,但是这已经属于程序范畴了。。。不属于数据库范畴了吧
gun_hzic 2006-04-20
  • 打赏
  • 举报
回复
楼上的想法是可以实现..

有没有其他好办法就不知道了,
帮顶
加载更多回复(9)

21,887

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧