方寸杀地煞带毫毛吗:MS SQL同一个表内数据更新问题求助

来源:百度文库 编辑:杭州交通信息网 时间:2024/04/24 12:53:23
问题是在A表中有两列属性,分别为B,C,。现要截取C中的一段数据更新进B中,也就是说在A表中同一个id中取c的一部分更新进B中(举个例子,比如C的数据是3房2厅,我要的就是截取出“3”然后把这个“3”放入到B中,对B进行更新),刚学这个,想了很久都没有解决。我自己写的是
update A
set B=
(select substring(first.C,1,1)
from A first, A second
where first.id=second.id)
报的错误是子查询返回的值多于一个。当子查询跟随在 =、!=、<、<=、>、>= 之后,或子查询用作表达式时,这种情况是不允许的。
语句已终止。
实在想不出来该怎么修改了,希望大家帮帮忙。先谢谢了

错大了!
至少也应该这样:
update A second
set B=
(select substring(first.C,1,1)
from A first
where first.id=second.id)
看你的需求,这样就可以了呀:
update A
set B=substring(first.C,1,1)

楼主的意思应该是表中ID相同的数据有很多,而同一ID对应的C字段取值也有多个吧?
不知道你要实现什么目的,可以这样

update first
set B=substring(second.c,1,1)
from A first, A second
where first.id=second.id

UPDATE [A]
SET [A].[B] = [T].[D]
FROM [A],
(
SELECT [A].[id] AS [id], SUBSTRING([A].[C], 1, 1) AS [D]
FROM [A]
)
[T]
WHERE [A].[id] = [T].[id]

你试下这个吧,我没有试过,但是思路应该是没有错的
这里也没有考虑什么效率问题.

这样就可以了,是更新每一行,不用加条件语句
update A
set B=substring(C,1,1)