我有table1
和tbl_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}}
答案 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语法。