2010年12月29日水曜日

SQL Anywhere SELECT結果でのUPDATE

あるテーブルのSELECT結果を使って別テーブルのUPDATEをする。

このようなことをしたい場合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 件のコメント:

コメントを投稿