使用条件更新另一列的列

时间:2016-01-21 13:05:39

标签: postgresql

我有table1tbl_cat。我想更新x animal cat

的值table1 id id_animal animal x 2 1 cat 3 3 2 cat 5 4 1 dog 7 5 2 dog 8 6 3 dog 9 tbl_cat id x 1 10 2 30
table1
id    id_animal    animal    x
2          1        cat      10
3          2        cat      30
4          1        dog      7
5          2        dog      8
6          3        dog      9

结果期望:

update table1
set table1.x = tbl_cat.x  
from table1 inner join tbl_cat
on (table1.id_animal=tbl_cat.id)
where table1.animal='cat'

我使用此查询,但它不起作用:

{{1}}

1 个答案:

答案 0 :(得分:1)

Postgres中的正确语法是:

update table1
    set table1.x = tbl_cat.x  
    from tbl_cat
    where table1.id_animal = tbl_cat.id and
          table1.animal = 'cat';

出于某种莫名其妙的原因,在update子句中支持join的三个主要数据库(MySQL,SQL Server和Postgres)都具有不同的语法。您的语法是SQL Server语法。