-2

我想将值插入到满足某些条件的地方table_Atable_B这是我想做但不起作用的事情:

insert into table_A(ID, value1, value2)
select ID, value1, value2
from table_B
where table_B.ID <> table_A.ID

我收到此错误:

无法绑定多部分标识符“table_A.ID”

谢谢

4

2 回答 2

5

它不是那样工作的。您没有在插入语句中加入表。采用

insert into table_A(ID, value1, value2)
select ID, value1, value2
from table_B
where ID not in (select ID from table_A)
于 2012-12-07T19:23:09.980 回答
1

通常,右连接更快

insert into table_A (ID, value1, value2)
select b.* 
  from table_b b
       right join table_a a
         on  a.ID = b.ID
 where a.ID is null

由于这是一个常见问题,在 SQL2003 标准中引入了 MERGE 语句。您可以根据特定条件更新现有行、插入新行和删除其他行。

merge into table_a a 
  using table_B b 
    on (a.ID=b.ID)
when not matched then
  insert (ID, value1, value2) 
  values (b.ID, b.value1, b.value2)

(未经测试)

于 2012-12-07T19:33:09.123 回答