0
希望大家都做得很好!在postgres中使用多個連接進行批量更新
我想在使用多個連接的表上運行批量更新,但我無法這樣做。
我有3個表:
表1:items
|id|total_price|created_at|
表2:prices
|id|company_id|item_id|special_price|created_at|
________________________________________________
| 1| 1 | 100 | 20.0 | 2017-01-01|
| 2| 1 | 101 | 30.0 | 2017-01-01|
| 3| 1 | 102 | 70.0 | 2017-01-01|
| 4| 1 | 103 | 90.0 | 2017-01-01|
表3:ranges
|id|company_id|range_from|range_to|commission_percent|
______________________________________________________
| 1| 1 | 10.0 | 50.0 | 5.0 |
| 2| 1 | 51.0 | 100.0 | 10.0 |
END結果,我想實現:我想大規模更新下面SQL基於prices
表:
UPDATE prices
SET special_price = (
CASE
WHEN (special_price BETWEEN ranges.range_from AND ranges.range_to) AND prices.company_id = ranges.company_id
THEN
ROUND((special_price + (special_price * commission_percent/100)), 2)
ELSE
special_price
END
)
FROM ranges
WHERE prices.company_id = 1
結果會像下面:
|id|company_id|item_id|special_price|created_at|
________________________________________________
| 1| 1 | 100 | 21.0 | 2017-01-01|
| 2| 1 | 101 | 31.5 | 2017-01-01|
| 3| 1 | 102 | 77.0 | 2017-01-01|
| 4| 1 | 103 | 99.0 | 2017-01-01|
到目前爲止,限制我運行到:
- 它始終運行的第一個範圍已定義,從未執行定義的第二個範圍。
- 我嘗試過使用各種方法來做到這一點,但沒有一個能給人滿意的結果。
IMP我將在prices
表做這數百萬條記錄
請幫幫忙/指教!
[從另外一個領域一個表的SQL更新域]的可能的複製(https://stackoverflow.com/questions/2763817/sql-update-fields-of-one-table-from-fields-of-another-one) – JGH