我想将值插入到满足某些条件的地方table_A
。table_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”
谢谢
我想将值插入到满足某些条件的地方table_A
。table_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”
谢谢
它不是那样工作的。您没有在插入语句中加入表。采用
insert into table_A(ID, value1, value2)
select ID, value1, value2
from table_B
where ID not in (select ID from table_A)
通常,右连接更快
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)
(未经测试)