根据PostgreSQL中的另一个表更新表

时间:2015-05-25 21:10:11

标签: sql postgresql subquery

我有两张桌子:

产品

| id | name        | price | type_id 
------------------------------------
| 1  | Product A   | 500   | 1
| 2  | Product B   | 600   | 3
| 3  | Product C   | 800   | 15

类型

| id  | price | 
---------------
| 1   |       |
| 3   |       |
| 15  |       |

现在,我想将类型表中的价格设置为 products 表中的值,该表具有相应的type_id

所以在类型表1 => 500, 3 => 600, 15 => 800中,鉴于type_id在products表中是唯一的。

我试着写一个像:

这样的查询
UPDATE types SET price = (
   SELECT sub.price FROM (SELECT p.type_id AS id, p.price AS price
                          FROM products p, types t
                          WHERE p.type_id = t.id) AS sub
   WHERE sub.id = types.id
)

但是,查询无法正常工作并且看起来太复杂了。我该怎么做?

1 个答案:

答案 0 :(得分:1)

如果某种类型最多仅归因于一种产品:

UPDATE types set price = products.price 
from products where products.type_id= types.id