SQL server 2008中 怎样用update 修改指定行号列号的数据?
比如这表姓名地址联系电话张三aa123XXXXXXX陈xbds4564现在要修改第二行的姓名,怎样修改?...
比如这表
姓名 地址 联系电话
张三 aa 123
XX XX XXX
陈x bds 4564
现在要修改第二行的姓名,怎样修改? 展开
姓名 地址 联系电话
张三 aa 123
XX XX XXX
陈x bds 4564
现在要修改第二行的姓名,怎样修改? 展开
2个回答
展开全部
SQL SERVER不像ORACLE有默认的行号可以操作,你要修改第二行,必须要先返回记录的行号.如下:
--演示环境
create table test(
姓名 varchar(10),
地址 varchar(10),联系电话 varchar(11))
--
insert into test
select '张三','aa','123' union all
select 'XX','XX','XXX' union all
select '陈x','bds','4564'
--得到行号,然后先修改哪条指定哪条
select *,ROW_NUMBER()over(order by 姓名) nb
from test
/*结果:
姓名 地址 联系电话 nb
---------- ---------- ----------- --------------------
XX XX XXX 1
陈x bds 4564 2
张三 aa 123 3
(3 行受影响)*/
--修改
UPDATE TB SET 姓名='修改的'
FROM (
select *,ROW_NUMBER()over(order by 姓名) nb
from test)TB
WHERE nb=1 --修改第一行
--查询
SELECT *
FROM test
/*修改后结果:
姓名 地址 联系电话
---------- ---------- -----------
张三 aa 123
修段如唯改的 XX XXX
陈x bds 4564
(3 行受握培影响)
*/
--删除橡雀演示环境
DROP TABLE TEST
--演示环境
create table test(
姓名 varchar(10),
地址 varchar(10),联系电话 varchar(11))
--
insert into test
select '张三','aa','123' union all
select 'XX','XX','XXX' union all
select '陈x','bds','4564'
--得到行号,然后先修改哪条指定哪条
select *,ROW_NUMBER()over(order by 姓名) nb
from test
/*结果:
姓名 地址 联系电话 nb
---------- ---------- ----------- --------------------
XX XX XXX 1
陈x bds 4564 2
张三 aa 123 3
(3 行受影响)*/
--修改
UPDATE TB SET 姓名='修改的'
FROM (
select *,ROW_NUMBER()over(order by 姓名) nb
from test)TB
WHERE nb=1 --修改第一行
--查询
SELECT *
FROM test
/*修改后结果:
姓名 地址 联系电话
---------- ---------- -----------
张三 aa 123
修段如唯改的 XX XXX
陈x bds 4564
(3 行受握培影响)
*/
--删除橡雀演示环境
DROP TABLE TEST
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询