注册 登录
编程论坛 SQL Server论坛

有关update一个表的问题(好像不简单)

尤慕思 发布于 2011-03-30 16:56, 1021 次点击
有这样一个表:
自动编号    学号        姓名       课程编号    课程名称  分数        
----------- ----------- -------- ----------- ----- ----------- -----------
3           2005001     张三       1           数学    69         
2           2005002     李四       1           数学    89         
3           2005001     张三       1           数学    69   

本来自动编号一列是按1,2,3来的,结果我把第一行输入错了,现在想用update 语句
把第一行的自动编号改为1,请问该如何操作啊   , 恳求路人甲的解答
10 回复
#2
qq10235692232011-03-30 19:25
这个自动编号好象是改不了的,他不是数据库数据的一部分,而是数据库管理系统自动编的号。好像要用数据库软件改!
#3
尤慕思2011-03-30 20:52
回复 楼主 尤慕思
首先谢谢你的热心回答!
还有就是,那个自动编号是我创建表时命名的列,
不是系统自动给的。
#4
尤慕思2011-03-30 20:56
回复 2楼 qq1023569223
首先谢谢你的热心回答!
还有就是,那个自动编号是我创建表时命名的列,
不是系统自动给的。
#5
qq10235692232011-03-30 21:42
首先你的表的第一行和第三行是一样的啊!这个必须要改一下,要不然改的时候会全部一起改的!
SQL语句是: UPDATE 表名 SET 自动编号=1 WHERE 姓名='张三'
要看一下你的自动编号的字类型是不是数字型的,假如是字符型的,上面的1还要用单引号括起来!
#6
尤慕思2011-03-30 21:59
回复 5楼 qq1023569223
这个我知道,但实际情况是他两行确实一样了,我想用update改更改但做不到,
所以才在这里求救的,
第一列是int型的,谢谢你
#7
makebest2011-03-30 22:16
首先出现这样的问题是因为你的表没有设置主键造成的
其次出现这样的问题会导致重复的记录总是保持步调一致
解决办法是删除重复的记录,然后再录入.
#8
尤慕思2011-03-31 12:22
回复 6楼 尤慕思
对的,看来这是必要做法了
#9
尤慕思2011-03-31 12:59
回复 6楼 尤慕思
起初我是这样做的,先建立一个视图:
create view test
as
select top 1 * from 学生表(即上述表的名字)

则视图test中存的是这样一行数据:
自动编号    学号        姓名       课程编号    课程名称 分数         
----------- ----------- -------- ----------- ----- -----------
3           2005001     张三       1           数学    69

然后通过视图来修改基表:
update test set 自动编号=1

猜怎么着?错误信息如下:

服务器: 消息 4427,级别 16,状态 1,行 1
视图或函数 'test' 不可更新,因为其定义中包含 TOP 子句。

这也算是一个教训吧
#10
zhaoxiao1832011-04-02 11:21
自动编号 那一列 不是自增长的 就可以改的   但是 你这个表貌似没有主键  UPDATE的时间你看有没有可以惟一标示的列
update "表名" set "自动编号" = 1 where "惟一标示的列" = **
#11
panyanpan2011-04-06 00:49
我觉得可以直接 打开数据库的表  来修改
非要sql 语句的话  我写了下   不过写的比较麻烦

--先  把2条一样  自动编号=3的记录  选一条插入到临时表#test
select top 1 * into #test from 表Table where 自动编号=1
--删除原来表  自动编号=3 的所有记录
delete from 表Table where 自动编号=3
--从临时表插回原来表  自动编号=3 的一条记录
insert into 表Table select * from #test
--修改临时表#test 自动编号为1
update #test set 自动编号=1 where 自动编号=3
--从临时表#test 插回 自动编号为1  的记录
insert into 表Table select * from  #test
--删除临时表#test
drop table #test


1