このようなことをしたい場合SQL Anywhereでは UPDATE~FROM~WHERE 構文を使うことで実現できる。この構文ではFROM句で取得したあるテーブルのデータをWHERE句で結合して更新をかける。
例として、TableAとTableBがあったときにTableAからcol1,col2列の値を読み込み、その値で同じpkeyを持つTableBの行を書き換えるには以下のようなSQLを使う。
UPDATE TableB SET col1=A.col1, col2=A.col2
FROM (
select pkey, col1, col2
from TableA
) A
WHERE pkey = A.pkey
他のDBでは同じことを複数の列をSETに書いて UPDATE table SET(col1,col2...)=(SELECT col1,col2...) のようにできるものもあるようだが、SQL Anywhereではこの構文は使えないようである。
0 件のコメント:
コメントを投稿