我在更新查询时遇到了一些问题。我的任务是更改数据示例的新闻行中的状态:
id product_id import_id modified_at status
30470 30470 5 "2014-12-08 14:46:22" "NEW"
96091 30470 7 "2014-12-18 06:11:10" "CURRENT"
161203 30470 9 "2014-12-29 12:05:35" "CURRENT"
253973 30470 11 "2014-12-31 06:11:08" "CURRENT"
317167 30470 12 "2014-12-31 06:12:18" "CURRENT"
362304 30470 14 "2015-01-01 06:11:09" "CURRENT"
因此,在我的数据示例中,我必须更新ID为362304的行并将状态设置为“NEW”。 当然,我必须为所有产品做这件事,但首先我想试试这个例子。
答案 0 :(得分:1)
我解决了我的问题所以我会与你分享。也许有更好的方法来做到这一点。如果您有任何想法请分享。
UPDATE
product_history
SET
status = 'NEW'
FROM
(
SELECT
ph2.product_id, max(ph2.id) as id
FROM
product_history ph2
WHERE
ph2.product_id = 30470
GROUP BY ph2.product_id
) AS ph_temp
WHERE
product_history.id = ph_temp.id
答案 1 :(得分:1)
SELECT
s.id
,s.product_id
,s.import_id
,s.modified_at
,case when
(
SELECT max(tmp.id)
FROM stack28609281 tmp
WHERE tmp.product_id = s.product_id
) = s.id
then "NEW"
else "CURRENT"
end as status
FROM stack28609281 s
创建此视图后,您可以更改应用程序中的查询以使用视图而不是表格。