SQL server 2012怎么从有相同ID号的那条信息中取用有用的信息放到和它有相同ID的行中呢?
SQLserver2012怎么从有相同ID号的那条信息中取用有用的信息放到和它有相同ID的行中呢?例如:ID身高年龄序号112178202131183224有的ID相同表...
SQL server 2012怎么从有相同ID号的那条信息中取用有用的信息放到和它有相同ID的行中呢?例如:
ID 身高 年龄 序号
1 1
2 178 20 2
1 3
1 183 22 4
有的ID相同表示是同一个人身高和年龄是相同的,但是同一个ID号的好多没有身高和年龄比如第一行、第三行和第四行有相同的ID证明他们是同一个人,有相同的身高和年龄,我怎么能在SQL server2012中把有相同ID的身高和年龄赋值给那些有相同ID但是身高和年龄为空的那些呢?
说得有点乱。总之就是要把第四行中的身高和年龄值赋给ID为和它相同的那些身高和年龄为空的那些就像第一行和第三行似的。
求具体操作方法,最详细越好!拜托!这只是举个例子,其实数据量很大的 展开
ID 身高 年龄 序号
1 1
2 178 20 2
1 3
1 183 22 4
有的ID相同表示是同一个人身高和年龄是相同的,但是同一个ID号的好多没有身高和年龄比如第一行、第三行和第四行有相同的ID证明他们是同一个人,有相同的身高和年龄,我怎么能在SQL server2012中把有相同ID的身高和年龄赋值给那些有相同ID但是身高和年龄为空的那些呢?
说得有点乱。总之就是要把第四行中的身高和年龄值赋给ID为和它相同的那些身高和年龄为空的那些就像第一行和第三行似的。
求具体操作方法,最详细越好!拜托!这只是举个例子,其实数据量很大的 展开
5个回答
展开全部
如果数据量 大的话,可以用循环来做。
一、我建议先取出身高和年龄不为空的数据,按ID排序。
二、通过游标去更新相同ID的身高和年龄。
三、具体sql。
declare @height varchar(3)
declare @age varchar(3)
declare @ID varchar(4)
declare cur cursor for
select 身高,年龄,ID from A表 order by ID where 身高!='' and 身高 is not null
open cur
fetch next from cur into @height,@age,@ID
while @@fetch_status = 0
begin
update A set 身高=@height,年龄=@age where ID=@ID
fetch next from cur into @height,@age
end
追问
或者说有A、B 两张表,有相同的ID值。A表中身高和年龄为空。如何将B表中的身高和年龄的信息按照各自相同的ID赋值给A表中呢。谢谢!!!!!!
追答
上面还没写完。既然是另一个表,那我就改一下句子。
declare @height varchar(3)
declare @age varchar(3)
declare @ID varchar(4)
declare cur cursor for
select 身高,年龄,ID from B order by ID --取出B表中要用的数据
open cur
fetch next from cur into @height,@age,@ID --取出一条记录
while @@fetch_status = 0
begin
update A set 身高=@height,年龄=@age where ID=@ID --一将这条记录根据ID更新到A
fetch next from cur into @height,@age
end
close cur
deallocate cur --释放游标
游标是邪恶的,看着还比较麻烦,其实就是个循环,但是占资源。可以尽量不用。
楼下twvampire的方式就挺好。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
如果你的数据只是像你写的这样
update t1 set t1.b=t2.b,t1.c=t2.c
from test t1 inner join (select a,max(isnull(b,0)),max(isnull(c,0))
from test
group by a) t2 on t1.a=t2.a
where isnull(b,0)=0 and isnull(c,0)=0
注:
ID =a 身高=b 年龄=c
这样就可以了;
楼下 ab594418159 的方式也可行,直接子查询查询出b,c为空的就可以了,,
游标的方式,,还是算了
追问
太谢谢您了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
查询出所有身高年龄不为空的数据 select * from tab where 身高<>'' and 身高 is not null
更新空的数据 update tab set tab.身高=T.身高,tab.年龄=T.年龄 from tab,(上面的语句) T where tab.id=T.id
更新空的数据 update tab set tab.身高=T.身高,tab.年龄=T.年龄 from tab,(上面的语句) T where tab.id=T.id
追问
谢谢您
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
如果你相同ID的数据是唯一的话我有个 本方法确实可行;
update tableName set height=(select height from tableName where tableName.id=?
and tableName.height is not null),
age=(select age from tableName where tableName.id=?
and tableName.age is not null
) where ID=?
update tableName set height=(select height from tableName where tableName.id=?
and tableName.height is not null),
age=(select age from tableName where tableName.id=?
and tableName.age is not null
) where ID=?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
用update试试吧
update t set from(select * from tablename) as t where 身高='' or 年龄=''
update t set from(select * from tablename) as t where 身高='' or 年龄=''
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询