0

別のフィールドのフィールドを使用して、あるテーブルを更新しようとしています。

Update x
From y
Set 1=y.1, 2=y.2, 3=y.3
Where y.4="*Cash*" and y.5="*Use*"

これは可能ですか?または、内部結合またはサブクエリを使用する必要がありますか?更新構文で「オプションがないか無効です」というエラーが発生し続けます。

4

1 に答える 1

2

あなたは次のようなものを求めているようです

UPDATE x
   SET (col1, col2, col3) = (select y.col1, y.col2, y.col3
                               from y
                              where y.col4 = '*Cash*'
                                and y.col5 = '*Use*')

通常、テーブルxとを関連付けるいくつかの追加条件がありyます。に対するクエリyが単一の行を返し、のすべての行xをその単一のデータ行で更新する場合、それは必要ありません。しかし、通常、あなたは次のようなものを持っているでしょう

UPDATE x
   SET (col1, col2, col3) = (select y.col1, y.col2, y.col3
                               from y
                              where y.col4 = '*Cash*'
                                and y.col5 = '*Use*'
                                and x.someKey = y.someKey)

xに一致する行があるの行のみを更新する場合y

UPDATE x
   SET (col1, col2, col3) = (select y.col1, y.col2, y.col3
                               from y
                              where y.col4 = '*Cash*'
                                and y.col5 = '*Use*'
                                and x.someKey = y.someKey)
 WHERE EXISTS( select 1
                 from y
                where y.col4 = '*Cash*'
                  and y.col5 = '*Use*'
                  and x.someKey = y.someKey)
于 2012-11-21T16:02:46.903 に答える