首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 培训 数据库 书店 程序员
中国软件网
欢迎您:游客 | 登录 注册 帮助
  • sql排序~~~~~~~~~~~~~ [已结贴,结贴人:dou_ye]
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • dou_ye
    • 等级:
    发表于:2008-06-24 17:28:22 楼主
    有一张表 
              姓名        班级    分数
              zhaoying    1      60       
              douye      1      58       
              machao      1      58       
              liujie      1      54       
              zhangqiang  2      54       
              machuang    2      66       
           
    如何按照分数和班级排序,在分数相同的情况下 按姓名排序。
    20  修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • dou_ye
    • 等级:
    发表于:2008-06-24 17:33:261楼 得分:0
    自个顶下~~~
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • kldxdybb
    • 等级:
    发表于:2008-06-24 17:38:262楼 得分:1
    难道 select * from 表名 order by 分数,姓名,班级

    这样不成?
    还是这样:
    select * from 表名 order by 班级,分数,姓名
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • dou_ye
    • 等级:
    发表于:2008-06-24 17:41:213楼 得分:0
    不是  有一个名次字段的 要给那个字段赋值
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • dou_ye
    • 等级:
    发表于:2008-06-24 17:43:124楼 得分:0

    姓名        班级    分数  名次
    zhaoying    1      60      0
    douye      1      58      0
    machao      1      58      0
    liujie      1      54      0
    zhangqiang  2      54      0
    machuang    2      66      0

    给名次字段赋上值
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-06-24 17:43:135楼 得分:1
    select 姓名,班级,分数 from table
    order by  班级,分数,姓名


    order by 后面字段表的先后顺序就是 排序的优先顺序
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-06-24 17:43:336楼 得分:1
    引用 3 楼 dou_ye 的回复:
    不是  有一个名次字段的 要给那个字段赋值

    那你要写清楚呀。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-06-24 17:45:087楼 得分:1
    SQL code
    order by 分数,姓名
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • dou_ye
    • 等级:
    发表于:2008-06-24 17:47:218楼 得分:0
    姓名        班级    分数  名次
    zhaoying    1      60      0
    douye      1      58      0
    machao      1      58      0
    liujie      1      54      0
    zhangqiang  2      54      0
    machuang    2      66      0

    给名次字段赋上值
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • dou_ye
    • 等级:
    发表于:2008-06-24 17:48:369楼 得分:0
    姓名        班级    分数  名次
    zhaoying    1      60      0
    douye      1      58      0
    machao      1      58      0
    liujie      1      54      0
    zhangqiang  2      54      0
    machuang    2      66      0

    给名次字段赋上值

    用班级分组,排序是先排分数,分数相同的排名次
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • dou_ye
    • 等级:
    发表于:2008-06-24 17:49:3610楼 得分:0
    姓名        班级    分数  名次
    zhaoying    1      60      0
    douye      1      58      0
    machao      1      58      0
    liujie      1      54      0
    zhangqiang  2      54      0
    machuang    2      66      0

    给名次字段赋上值

    用班级分组,排序是先排分数,分数相同的排    名称
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-06-24 17:53:2411楼 得分:0
    select  distinct 分数, identity(int,1,1) as 名次  into  #tmp from 成绩表  order by  分数

    select a.姓名,a.班级,a.分数,b.名次
    from 成绩表 a, #tmp b order by b.名次,a.姓名,a.班级


    这样可以吗?
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • dou_ye
    • 等级:
    发表于:2008-06-24 17:59:5612楼 得分:0
    引用 11 楼 holleno 的回复:
    select  distinct 分数, identity(int,1,1) as 名次  into  #tmp from 成绩表  order by  分数

    select a.姓名,a.班级,a.分数,b.名次
    from 成绩表 a, #tmp b order by b.名次,a.姓名,a.班级


    这样可以吗?


    好像不行  弄出来200多条结果。。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-06-24 21:24:5613楼 得分:1
    建立视图vv:
    select 名次,(select count(1) from tb where 班级=a.班级 and id <=a.id)as 名次2 from tb a order by 班级,分数,姓名
    更改视图:
    update vv set 名次=名次2
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-06-24 22:00:0314楼 得分:1
    SQL code
    select * from 数据表 order by 班级,分数,姓名
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-06-24 22:01:1315楼 得分:0
    看看在说!..............
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • dou_ye
    • 等级:
    发表于:2008-06-25 09:23:3516楼 得分:0
    引用 13 楼 octwind 的回复:
    建立视图vv:
    select 名次,(select count(1) from tb where 班级=a.班级 and id <=a.id)as 名次2 from tb a order by 班级,分数,姓名
    更改视图:
    update vv set 名次=名次2


    还是不行。。。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • sweetweiwei
    • 等级:
    发表于:2008-06-25 09:26:3117楼 得分:2
    create table tb
    (
    姓名 varchar(10),
    班级 int,
    分数 int,
    名次 int
    )
    insert into tb
    select
    'zhaoying'  , 1,60,0 union select
    'douye'      , 1,58,0 union select
    'machao'    , 1,58,0 union select
    'liujie'    , 1,54,0 union select
    'zhangqiang' , 2,54,0 union select
    'machuang'  , 2,66,0

    update a
    set 名次 = num
    from
    (select *,row_number() over(order by 班级,分数,姓名) as 'num'
    FROM tb ) a

    select * from tb order by 班级,分数,姓名
    结果
    姓名        班级          分数          名次
    ---------- ----------- ----------- -----------
    liujie    1          54          1
    douye      1          58          2
    machao    1          58          3
    zhaoying  1          60          4
    zhangqiang 2          54          5
    machuang  2          66          6

    (6 row(s) affected)
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • dou_ye
    • 等级:
    发表于:2008-06-25 09:29:1018楼 得分:0
    sweetweiwei:
    我现在用的还是2000 没有那个函数。。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • dou_ye
    • 等级:
    发表于:2008-06-25 09:35:5919楼 得分:0
    而且还是1班2班混合排名了 能不能每个班级独自排名啊?
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • dou_ye
    • 等级:
    发表于:2008-06-25 09:46:1220楼 得分:0
    help  help    help  help    help  help    help  help    help  help    ~~~~
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • sweetweiwei
    • 等级:
    发表于:2008-06-25 09:49:0321楼 得分:0
    每个班级独自排名?貌似不行哦,只能一个班一个班用临时表处理
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • dou_ye
    • 等级:
    发表于:2008-06-25 09:49:3722楼 得分:0
    引用 21 楼 sweetweiwei 的回复:
    每个班级独自排名?貌似不行哦,只能一个班一个班用临时表处理

    那也行啊。。帮忙给看看吧 
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-06-25 09:52:3223楼 得分:2
    SQL code
    create table tb ( 姓名 varchar(10), 班级 int, 分数 int, 名次 int ) insert into tb select 'zhaoying' , 1,60,0 union select 'douye' , 1,58,0 union select 'machao' , 1,58,0 union select 'liujie' , 1,54,0 union select 'zhangqiang' , 2,54,0 union select 'machuang' , 2,66,0 update T set 名次=(select count(1) from tb where 班级 = T.班级 and 分数>T.分数)+1 from tb T select * from tb order by 班级,名次 /* 姓名 班级 分数 名次 zhaoying 1 60 1 douye 1 58 2 machao 1 58 2 liujie 1 54 4 machuang 2 66 1 zhangqiang 2 54 2 */ drop table tb
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • utpcb
    • 等级:
    发表于:2008-06-25 09:53:4824楼 得分:0
    create table  #tablea(id int identity , name varchar(30), class char(3),g int)

    create table  tablea( name varchar(30), class char(3),g int)
    insert into tablea
    values ('as',2,60)

    insert into tablea
    values ('a1s',1,60)
    insert into tablea
    values ('a3s',2,65)
    insert into tablea
    values ('a2s',1,50)

    insert  into #tablea select*from tablea where class='1'  order by g

    DBCC CHECKIDENT ('#tablea', RESEED, 0);


    insert  into #tablea  select*from tablea where class='2' order by g

    select *from #tablea


    drop table  #tablea
    drop table  tablea
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-06-25 09:57:5025楼 得分:10
    SQL code
    create table t1 (sname varchar(10),classid int,score int) insert into t1 select 'zhaoying',1,60 union all select 'douye',1,58 union all select 'machao',1,58 union all select 'liujie',1,54 union all select 'zhangqiang',2,54 union all select 'machuang',2,66 select *, ( select count(*) from t1 where classid=a.classid and (score>a.score or (score=a.score and sname>a.sname)) )+1 as rank from t1 a order by classid ,rank
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-06-25 10:00:0226楼 得分:0
    谢谢25楼,学习了.
    我的方法.没有考虑按名字来排序的.
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • dou_ye
    • 等级:
    发表于:2008-06-25 10:01:2727楼 得分:0
    Garnett_KG:

    谢谢~~~~恩人呐  555555
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • dou_ye
    • 等级:
    发表于:2008-06-25 10:04:4728楼 得分:0
    谢谢大家了 呵呵
    修改 删除 举报 引用 回复

    网站简介广告服务网站地图帮助联系方式诚聘英才English 问题报告
    北京创新乐知广告有限公司 版权所有 京 ICP 证 070598 号
    世纪乐知(北京)网络技术有限公司 提供技术支持
    Copyright © 2000-2008, CSDN.NET, All Rights Reserved