更新查询联接表

时间:2018-07-30 09:55:46

标签: sql postgresql inner-join

我想要更新状态列,其中id表1 = id表2并且status =''

table1
===========================
id | delivery_status | name
===========================

table2 
=============
id | status | 
=============

表1上的交货状态和表2上的状态是不同的情况。

我只有1行匹配(id表1 = id表2),而2行没有匹配。如果我查询:

UPDATE myschema.table1
SET status = 'COMPLETED'
FROM myschema.table1 t1, myschema.table2 t2
WHERE t2.delivery_status = 'B' and t1.status = '' and t1.id = t2.id;

如果选择此选项,结果将有1行,但是当我执行此更新查询时,有3行将更新为COMPLETED。如何解决这个问题?我只想更新一行。我已经添加了条件t1.id = t2.id。表1和表2上的ID仅匹配一行。

1 个答案:

答案 0 :(得分:1)

仅包含要更新一次的表

UPDATE myschema.table1
SET status = 'COMPLETED'
FROM myschema.table2 t2
WHERE t2.delivery_status = 'B' and table1.status = '' and table1.id = t2.id;