[英]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.