gpt4 book ai didi

postgresql - 我如何根据定义的 where 子句顺序按顺序更新字段

转载 作者:行者123 更新时间:2023-11-29 13:35:45 25 4
gpt4 key购买 nike

我希望能够根据字段在 where in ('[john2].[john2]','[john3].[john3]','[john] 中的放置顺序顺序更新字段.[john]') 子句,但它似乎没有根据其关联顺序进行更新(请参阅下面的 SQL)。 我如何根据预定义的 where 子句顺序按顺序更新字段?

约翰

drop sequence temp_seq;
create temp sequence temp_seq;

update gis_field_configuration_bycube
set seq_in_grid = nextval('temp_seq')
where cube = 'Instruments' and level_unique_name in ('[john2].[john2]','[john3].[john3]','[john].[john]');

最佳答案

顺序在 IN() 构造中是无关紧要的,因为它定义了一个集合,而不是严格意义上的值列表。应该使用 VALUES 子句。

此外,假设 Postgres 8.4 或更高版本,row_number() 将比创建临时序列更简单。

这是应该起作用的:

update gis_field_configuration_bycube
set seq_in_grid = rn
from
(select row_number() over () as rn , string from
(values ('[john2].[john2]'),('[john3].[john3]'),('[john].[john]')) as v(string)
) as subquery
where cube = 'Instruments'
and level_unique_name=subquery.string;

关于postgresql - 我如何根据定义的 where 子句顺序按顺序更新字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12375793/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com