-2

いくつかの条件が満たされたtable_Afromに値を挿入したい。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」をバインドできませんでした

ありがとう

4

2 に答える 2

5

そのようには機能しません。INSERT ステートメントでテーブルを結合していません。使用する

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

これは一般的な問題であるため、MERGEステートメントはSQL2003標準で導入されました。特定の条件に応じて、既存の行を更新したり、新しい行を挿入したり、他の行を削​​除したりできます。

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 に答える