1

このロジックでテーブルを更新する必要があります: フィルター フィールド = '何らかの値' である行を検索し、これを "選択された行" と呼び、"選択された行" 自体と、順序フィールドが > である行を更新します。選択された行順序フィールド:

たとえば、「選択された行」の価格値と同じ 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

ありがとう

4

1 に答える 1