怎么为表加一列???

zhougang86 2008-10-08 10:19:14
有一个含有记录的表,怎么在原来表的基础上增加一列,给这个列赋值,让他从1开始加

效果如下所示:


table1
(原表)
name id age sex
A 045 18 M
B 043 14 w
C 041 15 M
D 009 16 w
E 067 18 M
F 055 19 w

更改后的表

name id age sex TT
A 045 18 M 1
B 043 14 w 2
C 041 15 M 3
D 009 16 w 4
E 067 18 M 5
F 055 19 w 6
...全文
462 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
wxg22526451 2008-10-08
  • 打赏
  • 举报
回复
--2005
select *,row_number() over (order by name) as TT from table1
水族杰纶 2008-10-08
  • 打赏
  • 举报
回复
declare @t table(name  varchar(5), id varchar(5), age int , sex varchar(2) ) 
insert @t select 'A', '045', 18, 'M'
insert @t select 'B' , '043', 14, 'w'
insert @t select 'C' , '041', 15, 'M'
insert @t select 'D', '009', 16 , 'w'
insert @t select 'E', '067', 18, 'M'
insert @t select 'F', ' 055', 19, 'w'
select * ,(select count(*)+1 from @t t1 where t1.Name <t2.Name )as TT from @t t2
/*
name id age sex TT
----- ----- ----------- ---- -----------
A 045 18 M 1
B 043 14 w 2
C 041 15 M 3
D 009 16 w 4
E 067 18 M 5
F 055 19 w 6

(影響 6 個資料列)
*/
beckham2537 2008-10-08
  • 打赏
  • 举报
回复
如果想在查询里加的话,sql 2000做不到 只能加列
sql2005里你可以用:
select row_number() over ( order by id asc), * from sysobjects
liangCK 2008-10-08
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 zhougang86 的回复:]
引用 1 楼 liangCK 的回复:
ALTER TABLE tb_name
ADD TT INT IDENTITY(1,1)
GO


这个我知道,我的意思是想在table中查询后也给他编号:
name id age sex TT
A 045 18 M 1
B 043 14 w 2
E 067 18 M 3
F 055 19 w 4
[/Quote]

--测试资料
CREATE TABLE tb(
ID1 char(2) NOT NULL,
ID2 char(4) NOT NULL,
col int,
PRIMARY KEY(ID1,ID2))
INSERT tb SELECT 'aa','0001',1
UNION ALL SELECT 'aa','0003',2
UNION ALL SELECT 'aa','0004',3
UNION ALL SELECT 'bb','0005',4
UNION ALL SELECT 'bb','0006',5
UNION ALL SELECT 'cc','0007',6
UNION ALL SELECT 'cc','0009',7
GO

--重排编号处理
DECLARE @ID1 char(2),@ID2 int
UPDATE a SET ID2=RIGHT(10000
+(SELECT COUNT(*) FROM tb WHERE ID1=a.ID1 AND ID2<=a.ID2)
,4)
FROM tb a
SELECT * FROM tb
/*--结果
ID1 ID2 col
---- ---- -----------
aa 0001 1
aa 0002 2
aa 0003 3
bb 0001 4
bb 0002 5
cc 0001 6
cc 0002 7
--*/
beckham2537 2008-10-08
  • 打赏
  • 举报
回复
可能有人不喜欢用identity
如果你删除了以后 就不连贯了,难道删除了该列再重新加?
给你另外一种解决方案
ALTER TABLE tb_name
ADD Columns1 INT
GO

declare @i int
set @i=1
update tb_name set Columns1=@i,@i=@i+1 这样就可以
删除了一条记录后再执行一遍 又是从1自动排序了
wer123q 2008-10-08
  • 打赏
  • 举报
回复
ALTER TABLE tb_name
ADD TT INT IDENTITY(1,1)
GO
  • 打赏
  • 举报
回复
经鉴定,上面的全部正解
zhougang86 2008-10-08
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 wufeng4552 的回复:]
TT int IDentity(1,1)
[/Quote]

帮我再看看下
zhougang86 2008-10-08
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 liangCK 的回复:]
ALTER TABLE tb_name
ADD TT INT IDENTITY(1,1)
GO
[/Quote]

这个我知道,我的意思是想在table中查询后也给他编号:
name id age sex TT
A 045 18 M 1
B 043 14 w 2
E 067 18 M 3
F 055 19 w 4
青锋-SS 2008-10-08
  • 打赏
  • 举报
回复
alter table table1 with nocheck add newcolumn int identity(1,1)
wxg22526451 2008-10-08
  • 打赏
  • 举报
回复
ALTER TABLE table1
ADD TT INT IDENTITY(1,1)
go
select * from table1
linux_ch 2008-10-08
  • 打赏
  • 举报
回复

ALTER TABLE tb_name
ADD TT INT IDENTITY(1,1)

水族杰纶 2008-10-08
  • 打赏
  • 举报
回复
TT int IDentity(1,1)
liangCK 2008-10-08
  • 打赏
  • 举报
回复
ALTER TABLE tb_name
ADD TT INT IDENTITY(1,1)
GO

22,210

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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