黑马程序员技术交流社区

标题: sql server怎样更改某一列的多个行的数据呢? [打印本页]

作者: 杨正    时间: 2012-7-10 18:21
标题: sql server怎样更改某一列的多个行的数据呢?
本帖最后由 杨正 于 2012-7-11 10:51 编辑

sql server怎样更改某一列的多个行的数据呢?(用一个语句实现)
如下图,要在列Year中为NULL的1,2,3,4行输入数据。

insert、update好像都不行,求解。
在线等大家的方法。

﹏﹏﹏﹏﹏﹏ . ﹏﹏﹏﹏﹏﹏ .﹏﹏﹏﹏﹏﹏ . ﹏﹏﹏﹏﹏﹏ .﹏﹏﹏﹏﹏﹏   2012.7.11   10:50更新

不好意思,我的图片中Year的数据类型错啦,这里更正一下。

我用的是最笨的方法:
  1. update Persons set Year=1970 where Id=1
  2. update Persons set Year=1975 where Id=2
  3. update Persons set Year=1980 where Id=3
  4. update Persons set Year=1985 where Id=4
复制代码
不知道有没有更简单一点的方法呢?
作者: 孙宁宇    时间: 2012-7-10 19:11
你的意思是把null值改成相同的日期吗?
如果是的话 update 表名 set [Year]='2012-7-10' where [Year] is null
作者: 程艳伟    时间: 2012-7-10 20:59
找共同点啊,如果没有共同点的话就分别update吧
作者: 古古头    时间: 2012-7-10 21:03
如果你想将Year列的4个Null修改为同一个值,楼上的是正解,
我猜你的意思多半是想将4个Null分别修改为不同的值,可以用下面的这种方法:
update 表名 set Year = t.c2 from
(
        select 1 as c1,'2008-6-1' as c2 union
        select 2,'2009-6-1' union
        select 3,'2010-6-1' union
        select 4,'2011-6-1'
) t
where 表名.Id = t.c1
分别将四个null修改为'2008-6-1','2009-6-1','2010-6-1','2011-6-1'
作者: 许庭洲    时间: 2012-7-11 08:40
update  table1 set Year="2012" where ID in (1,2,3,4) order by charindex(CAST(ID AS VARCHAR(3)),'1,2,3,4');
作者: 常静华    时间: 2012-7-11 10:10
孙宁宇 发表于 2012-7-10 19:11
你的意思是把null值改成相同的日期吗?
如果是的话 update 表名 set [Year]='2012-7-10' where [Year] is n ...

这个就可以!!!
作者: 常静华    时间: 2012-7-11 10:10
孙宁宇 发表于 2012-7-10 19:11
你的意思是把null值改成相同的日期吗?
如果是的话 update 表名 set [Year]='2012-7-10' where [Year] is n ...

这个就可以!!!
作者: 杨正    时间: 2012-7-11 10:56
update  table1 set Year="2012" where ID in (1,2,3,4)

你好,当更改的数值一样时用这个可以,不一样时怎样实现呢?如上图{:soso__13537489320994703755_2:}
作者: 杨正    时间: 2012-7-11 10:58
你的意思是把null值改成相同的日期吗?
如果是的话 update 表名 set [Year]='2012-7-10' where [Year] is null

你好,Year的值不一样,如上图{:soso__17261220355448879493_1:}




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2