order_id | 产品 | 国家 | mb - 123 | 面包 | 我们 |
---|---|---|
mb - 123 | 牛奶 | |
mb - 1256 | 奶酪 | 英国 |
mb - 1256 | 番茄酱 | |
mb - 1256 | 牛奶 |
在PostgreSQL中,你可以使用MAX
窗口函数,它允许你获得每个">order_id"分区。
SELECT order_id, Products, MAX(Country) OVER(PARTITION BY order_id) AS Country
FROM tab
如果需要更新现有表,可以计算每个国家的最大值,然后应用JOIN operation inside the
update '语句:
WITH cte AS (
SELECT order_id, Products, MAX(Country) OVER(PARTITION BY order_id) AS Country
FROM tab
)
UPDATE tab
SET Country = cte.Country
FROM cte
WHERE cte.order_id = tab.order_id AND cte.Products = tab.products
AND tab.Country IS NULL
点击这里查看演示。