1
これが可能かどうかわかりませんが、私がしようとしていることの本質は2つの別々のSELECTS
を持っています。 2つの結果の結合のために。注:{brackets}のテキストは単なる一般的な置換に過ぎません。下記の私にCASE
で構文エラーを与える:UPDATEクエリでSELECTの前にFROMの後にCASE文を使用する方法
UPDATE MySchema.MyTable as MyTable
SET {column_names} = {new values}
FROM
CASE
WHEN {case A} THEN
(SELECT {column_names}
FROM MySchema.MyOtherTable
WHERE {conditions}
LIMIT 1)
ELSE
((SELECT {column_names}
FROM MySchema.MyOtherTable
WHERE {conditions}
LIMIT 1)
UNION
(SELECT {column_names}
FROM MySchema.MyOtherTable
WHERE {other_conditions}
LIMIT 1))
END CASE;
AS MyOtherTable
WHERE MyTable.product_id = MyOtherTable.product_id
私はUPDATE
での作業このクエリを持っていた - SET
- 2例それぞれの内側に重複FROM
部分が、私は中に冗長性をトリミングしようとしています可能であればクエリ。私もそれぞれのケースの中でFROM
を動かしてみましたが、それも構文エラーを出しました。
はい、私は似たような考えられのです。これはトリガー関数の内部にあり、ケースAは、値が 'OLD'でNULLであるか、 'NEW'と 'OLD'で同じである場合です。更新は単一の行または同じ行と別の行を固定するためです。私はunion selectを含むだけでオーバーヘッドが大きくなるのではないかと懸念していましたが、私は 'NOT {case A} 'ロジックを考慮していませんでした。ありがとう! –