簡體   English   中英

更新 POSTGRESQL 中列的值

[英]UPDATE VALUES OF COLUMN IN 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 state: 21000

SET中的子查詢導致了問題。 您可能想要:

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

但這只是一個猜測。

嘗試這個:

update TABLE1 LFS
SET  C1= (Select ss.SALARY from matchsal ss where lfs.id=ss.id)
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'))
    

我找到了答案^^”這很簡單

update TABLE1 LFS
SET  C1= (Select SALARY from matchsal ss where ss.id=LFS."ID" limit 1)
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'))

我只是為子查詢添加一個限制

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM