このロジックでテーブルを更新する必要があります: フィルター フィールド = '何らかの値' である行を検索し、これを "選択された行" と呼び、"選択された行" 自体と、順序フィールドが > である行を更新します。選択された行順序フィールド:
たとえば、「選択された行」の価格値と同じ id_product の価格値 > を持つすべての価格行を増やしたいとします。ここで、「選択された行」には距離値 = 7 があるため、選択された行は * であり、更新された行は ^
マイテーブル ID | 価格 | id_product | 距離 1 | 10 | 1 | 1 2 | 04 | 1 | 2 3 | 02 | 1 | 12 4 | 44 | 1 | 2^ 5 | 09 | 1 | 1 6 | 13 | 1 | 7 * ^ 7 | 15 | 1 | 8 ^ 8 | 09 | 2 | 5 9 | 12 | 2 | 8 10 | 17 | 2 | 1 11 | 32 | 2 | 13 12 | 22 | 2 | 2
データベースはpostgres 9.2です。
ありがとうございました
私の責任です、
設定価格 = x.価格 + 2間違っていました、に更新されました
セット価格 = tbla.price + 2.
フィルターを次のように調整しました。
((tbla.price > x.price) OR (x.id = tbla.id AND tbla.price = x.price)) AND x.id_product = tbla.id_product
クエリが機能するようになりました。
UPDATE mytable tbla セット価格 = tbla.price + 2 から ( SELECT price, id, id_product FROM mytable WHERE 距離 = 7) x WHERE ((tbla.price > x.price) OR (x.id = tbla.id AND tbla.price = x.price)) AND x.id_product = tbla.id_product
ありがとう