Postgresql postgres中基于条件的部分更新
我想对一个表进行更新,更新的列取决于一个条件。我已经知道如何创建条件WHERE子句,如下所示:Postgresql postgres中基于条件的部分更新,postgresql,Postgresql,我想对一个表进行更新,更新的列取决于一个条件。我已经知道如何创建条件WHERE子句,如下所示: UPDATE table SET colA='apple', colB='banana' WHERE colC='fruits 但是,我希望更新基于一个条件,这样,如果条件为false,则只有colA将更新。达到以下程度的事物: UPDATE table SET colA='apple', (if $1=true colB='banana') WHERE colC='fruits 我找到的唯一资源
UPDATE table SET colA='apple', colB='banana' WHERE colC='fruits
但是,我希望更新基于一个条件,这样,如果条件为false,则只有colA将更新。达到以下程度的事物:
UPDATE table SET colA='apple', (if $1=true colB='banana') WHERE colC='fruits
我找到的唯一资源与第一个示例有关。这在研究生中可能吗?我希望避免对此类条件进行单独查询。您可以使用
CASE
表达式来控制更新B列的逻辑:
UPDATE table
SET
colA = 'apple',
colB = CASE WHEN $1 = true THEN 'banana' ELSE colB END
WHERE
colC = 'fruits';
当
$1
标志设置为true时,B列将被更新为banana
,否则更新将被设置为当前值,这实际上是一个不可操作的值。您可以使用CASE
表达式来控制更新B列的逻辑:
UPDATE table
SET
colA = 'apple',
colB = CASE WHEN $1 = true THEN 'banana' ELSE colB END
WHERE
colC = 'fruits';
当
$1
标志设置为true时,B列将更新为banana
,否则更新将只设置为当前值,这实际上是一个不可操作的值。aCASE
语句可能会帮助您:
UPDATE table
SET colA = 'apple',
colB = CASE WHEN $1 = true THEN 'banana' ELSE colB END
WHERE colC = 'fruits';
但是,可能存在SQL注入的风险,在这种情况下,最好由应用程序逻辑选择两个单独的查询 一个
案例
陈述可能会帮助您:
UPDATE table
SET colA = 'apple',
colB = CASE WHEN $1 = true THEN 'banana' ELSE colB END
WHERE colC = 'fruits';
但是,可能存在SQL注入的风险,在这种情况下,最好由应用程序逻辑选择两个单独的查询