gpt4 book ai didi

postgresql - PostgreSQL 中的条件更新

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

我正在测试一些条件渲染,看看它在小范围内的表现是否符合预期,然后再在更大的表格上实现。

目标是创建一个更新查询,它只会更新用户输入新数据的列,如果没有数据,则不会对这些列执行任何操作

这是我的情况,然后进行测试。具有空值的行未更新 newValue:

drop table if exists tester

create table tester (
id serial primary key
val TEXT,
)

insert into tester (val) values (null)

select * from tester

update tester
set val = case
when val = null
then 'newValue'
else val
end;

这是我想要生成的一个简单示例($1 是用户输入):

drop table if exists tester

create table tester (
id serial primary key
val TEXT,
)

insert into tester (val) values (null)

select * from tester

update tester
set val = case
when val != $1
then $1
else val end
where id = 1

我期望发生的是插入以创建 ID 为 1 的行和等于 null 的 val 单元格。

然后在更新查询中,我认为更新将检查第 1 行的 val 中存储的数据是否不等于输入值,如果为真,则输入值将设置为第 1 行的 val .

逻辑和语法是否正确?如果不是,那有什么不正确的?

最佳答案

假设用户输入 $1 永远不会为 NULL:


update tester 
set val = $1
where id = 1
and val <> $1 -- avoid updating with the same value
;

注意:您的:

 `case when val != $1 then $1 else val end`

可以简化为:

 `case when val <> $1 then $1 else $1 end`

或:

 `$1`

关于postgresql - PostgreSQL 中的条件更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52510655/

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