我試圖通過加入payid來更新payid表的eid的pay表。PayC表中有重複的eid s'匹配的payid s',每個只需要獲取一個EID匹配PAYID使用子查詢更新列
update PAY
SET eid = (select t.EID from (select a.EID,a.PAYID, count(a.EID) as cnt
from PAYC a,PAYC b
where a.payid = b.payid
group by a.PAYID,a.eid
having count(a.eid) > 1) t
where T.payid = PAYID)
WHERE EXISTS (select 'X' from (select a.EID,a.PAYID, count(a.EID) as cnt
from PAYC a,PAYC b
where a.payid = b.payid
group by a.PAYID,a.eid
having count(a.eid) > 1) t
where T.payid = PAYID)
錯誤:子查詢返回的值超過1。 當子查詢遵循=,!=,<,< =,>,> =或當子查詢用作表達式時,這是不允許的。
,我們可以通過這個查詢找到重複的EID但需要獲取ONLY ONE EID
樣本數據
paycid payid eid amount year quarter
1 101 1000 2000 2001 1
2 101 1000 3000 2001 2
需要爲匹配payid
取eid
1000
請提供樣本數據和期望的結果。 –
今天提示:切換到現代,明確的'JOIN'語法。易於編寫(沒有錯誤),更易於閱讀和維護,並且在需要時更容易轉換爲外部聯接。 – jarlh