sql 查询排列第几

原创 2007年09月26日 09:13:00
create table ta(id smallint identity(1,1),name varchar(8),price int) --建表

insert into ta select 'a0',20 union all select 'a1',21 union all select 'a2',12 union all select 'a3',17 union all
select 'a4',22 union all select 'b1',33 union all select 'b3',14 union all select 'c2',46 union all select 'c3',32  --添加data

select * from ta --show data

create procedure t_proc --建存储过程
@flag int
as
if @flag=1
begin    --查询出price最高的一条记录(如46)
select top 1 * from ta order by price desc
end
else if @flag=2
begin    --查询出price第二高的一条记录(如33)
select top 1 * from ta where id not in(select top 1 id from ta order by price desc) order by price desc
end
else if @flag=3
begin    --查询出price排名在第三到第六的记录
select top 4 * from ta where id not in(select top 2 id from ta order by price desc) order by price desc
end
else if @flag=4
begin --查询出price排名在第七到第九的记录
select top 3 * from ta where id not in(select top 6 id from ta order by price desc) order by price desc
end
go

exec t_proc 1 --执行
/*----result (结果)
8c246
*/
exec t_proc 2
/*----result
6b133
*/
exec t_proc 3
/*----result
9c332
5a422
2a121
1a020
*/
exec t_proc 4
/*----result
4a317
7b314
3a212
*/


答者:Hopewell_Go(好的在后頭﹗希望更好﹗﹗) 信誉:100 级别:user2 日期:2006-11-18 8:49:03 id:37894036

id  name price
1   a0    20
2   a1    21
3   a2    12
4   a3    17
5   a4    22
6   b1    33
7   b3    14
8   c2    46
9   c3    32

select *,identity(int,1,1) TID into #table from tableName
order by price

select * from #table这样的虚拟表可以实现你的要求
 

sql分组后查找每组的前几条记录语句

常用的sqlserver,mysql,oracle等数据库sql语句都是遵循sql标准,但是每种数据库都有自己的特点。 如果想做到程序兼容性更好,后期维护更方便,还是建议尽量使用各种数据库通用的sql...
  • jinjin603
  • jinjin603
  • 2016年06月01日 11:32
  • 2040

数据库:怎样判断关系是第几范式~~看完懂了~~

数据库范式1NF 2NF 3NF BCNF(实例)  设计范式(范式,数据库设计范式,数据库的设计范式)是符合某一种级别的关系模式的集合。构造数据库必须遵循一定的规则。在关系数据库中,这种规则就是范...
  • a407603406
  • a407603406
  • 2014年01月03日 16:45
  • 9920

关系数据库范式快速识别方法--第几范式

第几范式识别
  • sinat_28729797
  • sinat_28729797
  • 2016年02月04日 15:27
  • 3771

oracle 查询结果的排序,ASC/DESC,升序,降序,多列排序,ORDER BY

oracle 查询结果的排序,ASC/DESC,升序,降序,多列排序,ORDER BY oracle 查询结果的排序,ASC/DESC,升序,降序,多列排序,ORDER BY,一些练...
  • csnewdn
  • csnewdn
  • 2016年11月16日 17:27
  • 7174

mysql中查询第几行到第几行的记录

mysql中查询第几行到第几行的记录 1、查询前n行   select * from table limit n; 或 select * from table limit 0,n;       ...
  • ljh0302
  • ljh0302
  • 2015年05月22日 20:57
  • 2277

SQL 数据库 学习 024 查询-07 order by 的用法 --- 以某个字段排序

我的电脑系统:Windows 10 64位 SQL Server 软件版本: SQL Server 2014 Express 本篇博客里面使用了 scott 库,如何你现在还没有添加这个库到你的服...
  • github_35160620
  • github_35160620
  • 2016年10月17日 03:17
  • 12475

全排列剖析:求n个数第k个排序----康托展开

康托展开的公式:(不用记,看形势就行,下面会有例子) X=an*(n-1)!+an-1*(n-2)!+...+ai*(i-1)!+...+a2*1!+a1*0! ai为整数,并且0 适用范围:没有重...
  • modiziri
  • modiziri
  • 2014年03月28日 12:30
  • 3454

ORACLE之SQL——排序

**1、给查询结果进行降序** 按照员工的雇佣日期给员工进行降序查询 按照员工的编号进行升序查询 提示,对于升序或者降序操作查询可以通过所查询的位置号进行操作,如以下: 对员工的员工号...
  • sungsasong
  • sungsasong
  • 2017年07月07日 15:34
  • 140

[数据库] Oracle单表查询总数及百分比和数据横向纵向连接

这是最近学习SQL语句的统计,其中本文主要涉及以下几个知识点:         1.如何统计一张表中某个字段的总数,如不同"专业"的学生数及所占百分比;         2.如何联系另一张表进行查询某...
  • Eastmount
  • Eastmount
  • 2016年06月14日 02:41
  • 4541

sql内连接、外连接和自连接查询

一. 前言: 通常在项目中对表的查询都是关联多张表,多表查询就涉及到sql的内连接、外连接和自连接查询。本篇文章将简单的介绍这些sql连接的使用,希望对大家有所帮助。 二. 数据准备: 先准备两张...
  • zdp072
  • zdp072
  • 2015年01月06日 14:20
  • 10296
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:sql 查询排列第几
举报原因:
原因补充:

(最多只允许输入30个字)