首页 > 解决方案 > 更新表中的多个字段

问题描述

我一直在尝试更新transsit表中列中的多个字段值tracking_details

我有一个名为的表tracking_details,它由两列idtranssit

示例tracking_details表:-

id  |   transsit
------------------
1   |   rec
2   |   rec
3   |   sen
4   |
5   |   rec

在这里,我想rec改成receivedwhere idequal1,2 and 5

到目前为止我所做的是:

UPDATE tracking_details
SET transsit = 'received'
WHERE id = (select id from tracking_details where transsit='rec');

然后我收到以下错误:

ERROR:  more than one row returned by a subquery used as an expression

********** Error **********

ERROR: more than one row returned by a subquery used as an expression
SQL state: 21000

标签: postgresql

解决方案


UPDATE tracking_details
SET transsit = 'received'
WHERE id IN (select id from tracking_details where transsit='rec');

对于多行更新使用IN而不是=因为=将始终只有一行,或者您可以简单地使用连接。

UPDATE tracking_details a
JOIN tracking_details b
  ON a.id=b.id
SET a.transsit = 'received'
Where b.transsit='rec';

Furthurmore 查看查询,您使用单个查询执行此操作

UPDATE tracking_details 
SET transsit = 'received'
WHERE transsit='rec';

推荐阅读