Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 如何使用case按id更新行?_Sql_Postgresql_Insert_Case - Fatal编程技术网

Sql 如何使用case按id更新行?

Sql 如何使用case按id更新行?,sql,postgresql,insert,case,Sql,Postgresql,Insert,Case,是否可以通过id更新其他行值 我试着这样做 但没什么 UPDATE era SET id = CASE WHEN id = 3 THEN gender = 'Female'--or maybe it is possible to call insert command here? insert into era (gender) values 'female'? WHEN id = 4 THEN gender = 'Male' END; 我希望在结果中更改我的表中的值…我不知

是否可以通过id更新其他行值

我试着这样做 但没什么

UPDATE era 
SET id = CASE
    WHEN id = 3 THEN gender = 'Female'--or maybe it is possible to call insert command here? insert into era (gender) values 'female'?
    WHEN id = 4 THEN gender = 'Male'
END;

我希望在结果中更改我的表中的值…

我不知道您的更新有多大,但可以使用
from
子句join中的表,然后对
case
语句进行轻微更改,如下所示:

update era u
   set gender = case 
                 when f.id = 3
                  then 'Female'
                 when f.id = 4
                  then 'Male'
                end
  from era f
 where u.id = f.id

如果要更新列
gender
,则应在
SET
中使用它,而不是像这样使用
id

UPDATE era 
SET gender = CASE id
    WHEN 3 THEN 'Female'
    WHEN 4 THEN 'Male'
END
WHERE id IN (3, 4)

@Anton Griduhsko,对于您的用例,您可以使用其他用户提到的其他选项,但使用
from子句和join
您可以使用n个其他表,这些表可能需要根据这些其他表列的值更新不同的列。