首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

sql 连表更新有关问题

2013-08-26 
sql 连表更新问题各位牛牛好,我现在遇到个问题,需要请教大家。就是我有两张表,表结构是一模一样的,因为另一

sql 连表更新问题
各位牛牛好,我现在遇到个问题,需要请教大家。

就是我有两张表,表结构是一模一样的,因为另一张是备份表,只是其中的一些字段值不一样。

当初我把原表的某个字段为4的都改为了7,现在我需要把备份表中为4的,把原表也该为4,会有多行受影响。

update info set qq = (select qq from bakbak where qq = 4)


我现在这样写,报这样的错误:消息 512,级别 16,状态 1,第 2 行
子查询返回的值不止一个。当子查询跟随在 =、!=、<、<=、>、>= 之后,或子查询用作表达式时,这种情况是不允许的。
语句已终止。

所以特来万能的csdn请教牛牛们。
[解决办法]
update info set qq = (select qq from bakbak where qq = 4)
把=号改为in试一下
[解决办法]
--(select qq from bakbak where qq = 4),这个查询的返回值不止一个,所以update info set qq=(1或2或3...),SQL SERVER不知道用哪个,就报错了
update info set qq = (select qq from bakbak where qq = 4)
--参考如下:
--首先你的原表和备份表要有唯一的关联字段。比如存在主键ID。
--先查询,看看结果是否正确,再更新:
--select
SELECT *
FROM dbo.info A
INNER JOIN dbo.bakbak B
ON a.ID = B.id
WHERE B.qq = 4
--update
UPDATE A
SET A.qq = B.qq
FROM dbo.info A
INNER JOIN dbo.bakbak B
ON a.ID = B.id
WHERE B.qq = 4

[解决办法]
update info set qq =a.qq
from bakbak a inner join info on a.id=info.id

热点排行