难难难!!!如何部使用into语句而产生递增的序列。

ZHANGWEI15 2003-08-21 02:27:31
难难难!!!如何部使用into语句而产生递增的序列。

有表tb结构如下(这只是举例,所以结构比较简单)
a b c
4 5 6
5 6 7

我想产生查询结果为:
id a b c
1 4 5 6
2 5 6 7



我知道可以通过建立临时表和identity函数来实现,
但是我现在还不能使用临时表,请问这样能实现吗?怎么实现,恳请帮助!!!













...全文
27 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
zenggao 2003-08-21
  • 打赏
  • 举报
回复
select (select count(*) from jobs where (job_id+5)<=tem.job_id) as row, tem.* from jobs tem
where job_id>5
ZHANGWEI15 2003-08-21
  • 打赏
  • 举报
回复
THANKS A LOT
pengdali 2003-08-21
  • 打赏
  • 举报
回复
1.首先如果a不是主键怎么办?我只是从一张表中根据条件产生记录集,然后对产生的记录集进行编号(从1开始)

不是主键没有关系,关键是,必须是唯一的,没有重复,必须有先后顺序。(其实你在你的表里添加一个“自增列”就可以符合要求了)

2.各位的办法对取tb这张表的所有数据每有问题,但是如果是有条件的查询呢?大家可以在sqlserver中的pubs数据库作个试验:
执行

select (select sum(1) from jobs where job_id>5 and job_id<=tem.job_id) as row, tem.* from jobs tem where job_id>5
ZHANGWEI15 2003-08-21
  • 打赏
  • 举报
回复
首先要谢谢各位,各位不愧是高手,厉害厉害。!

但是还有问题要请教大家:
1.首先如果a不是主键怎么办?我只是从一张表中根据条件产生记录集,然后对产生的记录集进行编号(从1开始)

2.各位的办法对取tb这张表的所有数据每有问题,但是如果是有条件的查询呢?大家可以在sqlserver中的pubs数据库作个试验:
执行

--正确
select (select sum(1) from jobs where job_id<=tem.job_id) as row, tem.* from jobs tem

--有问题,row 不是从1开始了
select (select sum(1) from jobs where job_id<=tem.job_id) as row, tem.* from jobs tem
where job_id>5

我该怎么作能使每次的row列都是从1开始的吗?谢谢执教!!!
pengdali 2003-08-21
  • 打赏
  • 举报
回复
select (select sum(1) from 表 where 有顺序的主键<=tem.有顺序的主键) 行编号,* from 表 tem
pengdali 2003-08-21
  • 打赏
  • 举报
回复
select (select sum(1) from 表 where 有顺序的主键<=tem.有顺序的主键) 行编号,* from 表 tem
dafu71 2003-08-21
  • 打赏
  • 举报
回复
如果a是主键则
selec *,(select sum(1) from yourtable where a<=tmp.a) as id from yourtable as tmp order by a
CrazyFor 2003-08-21
  • 打赏
  • 举报
回复

select (select count(*) from tb where a<=aa.a),* from tb aa

34,576

社区成员

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

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