在查询结果中如何加一个序列号!

本文介绍了三种在SQL查询结果中添加行号的方法:通过比较组合字段值、使用临时表添加标识列、直接修改物理表结构添加并后续删除行号字段。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

原贴:http://community.youkuaiyun.com/Expert/topic/3714/3714430.xml?temp=.0695917
请问能否在查询结果内加上一列值,该列值标识的是查询出的记录的行号?
如:把原来的查询结果:
 aa   bb   cc
  21   53   46
  34   34   54
  67   457  354
变为
 line  aa  bb  cc
   1    21  53  46
   2    34  34  54
   3   67   457 354

--解法一:如果 aa+bb+cc 能唯一确定一条记录,则:
create table 表(aa varchar(20), bb varchar(20), cc varchar(20) )
insert 表 select '21', '53',   '46'
union all select '34', '34',   '54'
union all select '67', '457',  '354'
go

select line=(select sum(1) from 表 where aa+'_'+bb+'_'+cc<=a.aa+'_'+a.bb+'_'+a.cc)
,* from 表 a

drop table 表


--测试结果

(所影响的行数为 3 行)

line        aa                   bb                   cc                  
----------- -------------------- -------------------- --------------------
1           21                   53                   46
2           34                   34                   54
3           67                   457                  354

(所影响的行数为 3 行)


--解法二,用临时表增加一个标识列字段

create table 表(aa varchar(20), bb varchar(20), cc varchar(20) )
insert 表 select '21', '53',   '46'
union all select '34', '34',   '54'
union all select '67', '457',  '354'
go

select identity(int,1,1) as line,* into #t from 表
select * from #t

--结果:

line        aa                   bb                   cc                  
----------- -------------------- -------------------- --------------------
1           21                   53                   46
2           34                   34                   54
3           67                   457                  354

(所影响的行数为 3 行)


--解法三:在物理表中添加一个字段后,最后删除

create table 表(aa varchar(20), bb varchar(20), cc varchar(20) )
insert 表 select '21', '53',   '46'
union all select '34', '34',   '54'
union all select '67', '457',  '354'
go

alter table 表 add  line  int identity(1,1)
select * from 表
alter table 表 drop column line

drop table 表

--结果:

(所影响的行数为 3 行)


(所影响的行数为 3 行)

aa                   bb                   cc                   line       
-------------------- -------------------- -------------------- -----------
21                   53                   46                   1
34                   34                   54                   2
67                   457                  354                  3

(所影响的行数为 3 行)







Trackback: http://tb.blog.youkuaiyun.com/TrackBack.aspx?PostId=250961

 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值