返回信息流求教:用SQL语句查询出排名后,如何用SQL语句自动生成排名的序号 (我学的delphi)
比如 排名 如何显示成 排名
张三 1 张三
李四 2 李四
王五 3 王五
马六 4 马六
最好不要增加新的字段,我记得好像SQL语句直接有这个功能的?
先谢谢各位了,谢谢!谢谢!
这是一条镜像帖。来源:北邮人论坛 / database / #1143同步于 2007/6/7
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Database机器人发帖
求教:用SQL语句查询出排名后,如何用SQL语句自动生成排名的序
shumu
2007/6/7镜像同步13 回复
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
要是像2楼说的那样楼主就没必要发帖了,count得到的对于所有记录都是一个值
这个不是最优方案,但是也达到了要求
set @a=0;
select @a:=@a+1 as No,Name from t;
Mysql下可以执行
还有就是2楼的语句本身就有问题
select count(*) from t是可以用的,但是select count(*), a from t的话如果没有group by语句的话就报错了,自己先试一下再来给别人解释吧
【 在 wrc2872 的大作中提到: 】
: 4楼说的还是挺对的
: 可是,按照这种方法写出来的前边的排名都还是1,因为只有一条相关的记录
没看懂就试试再说,别想当然
这个我试过了,语法如下:
SELECT COUNT(*) AS order_m, StudentName
FROM StudentInfo
GROUP BY StudentName
可是在输出中order_m均为1,不太明白怎么样可以递增
【 在 hisashi 的大作中提到: 】
: 没看懂就试试再说,别想当然
【 在 wrc2872 的大作中提到: 】
: 这个我试过了,语法如下:
: SELECT COUNT(*) AS order_m, StudentName
: FROM StudentInfo
: ...................
晕倒,我没说这种能用啊,只是说2楼的语法根本就错了,group by 之后的count(*)是每组里的计数,怎么能对呢....
正解
【 在 hisashi 的大作中提到: 】
set @a=0;
select @a:=@a+1 as No,Name from t;
Mysql下可以执行
另法:用嵌套的SQL语句
select *,
( select (COUNT(drugid)+1)
from drugs table2
where table2.drugprice > table1.drugprice
) as orders
from drugs table1
order by orders