首页 > 解决方案 > 在 POSTGRESQL 中更新列的值

问题描述

我有 4 张桌子:

1. matchsal 
ID salaray
1  1000
2  2000
3  3000
4  4000
5  5000

2. TABLE1
ID   C
1   NA
2   NA
3   NA
4   NA
5   NA

3. TABLE2
ID   lfs1   lfs2
1    2      3
2    3      1
3    3      1
4    3      1
5    2      3

4. TABLE3
ID_NIC    filternn
1         private
2         public
3         private
4         Private
5         public

我想要的是用匹配表中的工资值和其他表中的条件更新 table1,我尝试了这个查询:

update TABLE1 LFS
SET  C1= (Select SALARY from matchsal ss )
WHERE LFS."ID" IN
(   SELECT "ID" from
        TABLE2 lfs,
        TABLE3 NIC
    WHERE lfs."ID"=NIC."ID_NIC" 
    and lfs.lfs1 <> LFS.lfs2
    and filternn in ( 'Private'))

我收到了这个错误:错误:用作表达式的子查询返回的不止一行 SQL 状态:21000

标签: sqlpostgresql

解决方案


中的子查询SET导致问题。您可能想要:

SET  C1 = (Select ss.SALARY from matchsal ss where ss.id = lfs.id)

但这只是一个猜测。


推荐阅读