当前位置: 代码迷 >> Sql Server >> SQL server2008批量更新,该怎么处理
  详细解决方案

SQL server2008批量更新,该怎么处理

热度:43   发布时间:2016-04-24 09:12:06.0
SQL server2008批量更新
现在有两个表a和b,将a中的“bianhao”这一列的值,全部插入到b中的“ASSET_NEW_ID”

update b set ASSET_NEW_ID = a.bianhao from??a??INNER JOIN b ON a.ID=b.ID 


总是提示:
消息 512,级别 16,状态 1,过程 detail_upd,第 6 行
子查询返回的值不止一个。当子查询跟随在 =、!=、<、<=、>、>= 之后,或子查询用作表达式时,这种情况是不允许的。
语句已终止。
------解决思路----------------------
b表中的某一个(或几个)ID匹配到多个a.表中多个ID,所以sql server不知道用a表中的哪个值去更新b表了
------解决思路----------------------
你a表数据不唯一,至少有一个ID有多条记录。用下面的语句找出来
    SELECT ID, COUNT(*)
      FROM a
  GROUP BY ID
    HAVING COUNT(*) > 1

------解决思路----------------------
引用:
找了这个ID都是唯一的,主要是 ASSET_NEW_ID 全部为null,并且bianhao 有部分也是null. 

不可能的,两表又不通过ASSET_NEW_ID、bianhao 关联,是否null没关系。
你是否b上的触发器出的错?
  相关解决方案