如何用sql语句实现在查询结果中增加一列显示流水号,流水号从1开始

haitao5676 2004-10-14 10:59:40
不用identity函数,而是用sql语句,就像oracle里面的rownum一样
...全文
636 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
zjcxc 元老 2004-10-14
  • 打赏
  • 举报
回复
--如果不用identity,也不用临时表,我想应该就只有上面的低效且有限制的方法

--如果不用identity,但可以用临时表,可以这样处理

--生成临时表
select 序号=0,* into #t fro 表 order by ... --可以是按任意排序方式或者是不排序

--生成序号
declare @i int
set @i=0
update #t set @i=@i+1,序号=@i

---显示结果
select * from #t

--删除临时表
drop table #t
zjcxc 元老 2004-10-14
  • 打赏
  • 举报
回复
--如果有主键/唯一键(或者是不重复的字段),可以依据这些字段来生成

--升序
select 序号=(select count(*) from 表 where 主键<=a.主键),* from 表 a order by 主键

--降序
select 序号=(select count(*) from 表 where a.主键<=主键),* from 表 a order by 主键 desc


--但这样的方法,在数据量大时,效率是很低的
victorycyz 2004-10-14
  • 打赏
  • 举报
回复
那就根据主键排序。如表:T(a PK,b varchar)

select id=(select count(*) from t where a<=a.a),*
from t a
order by a
了缘 2004-10-14
  • 打赏
  • 举报
回复
或者,你自己写函数吧,
了缘 2004-10-14
  • 打赏
  • 举报
回复
select newid()

34,587

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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