2015-11-03 65 views
2

我的工作系統,在這裏我要更新一個字段dupstat基於4列即CNAME,FNAME,MNAME,DOB重複的記錄。此外,我必須檢查是否資格列包含值「否」。我有以下查詢,找出重複的記錄:SQL - 使用內更新記錄加入

select o.cname, o.fname, o.CRollNo, o.Coll_Code, o.mname, o.dob, oc.dupeCount, o.Eligible, o.dupstat 
from REGN_Temp o 
inner join (
    SELECT cname, COUNT(*) AS dupeCount, FName, mname, dob 
    FROM REGN_Temp 
    GROUP BY cname, FName, mname,dob 
    HAVING COUNT(*) > 1 
) oc on o.cname = oc.cname and o.fname = oc.FName and o.mname = oc.mname and o.dob=oc.dob and o.Eligible='No' order by cname, fname 

現在我想更新列「dupstat = Y」所有這些都是重複的記錄,並資格 =「NO」

回答

4

可以UPDATEJOIN直接,只需使用UPDATE代替SELECT其次SET這樣的:

UPDATE o 
SET o.dupstat='Y' 
from REGN_Temp o 
inner join 
(
    SELECT cname, COUNT(*) AS dupeCount, FName, mname, dob 
    FROM REGN_Temp 
    GROUP BY cname, FName, mname,dob 
    HAVING COUNT(*) > 1 
) oc on o.cname = oc.cname 
    and o.fname = oc.FName 
    and o.mname = oc.mname 
    and o.dob=oc.dob 
    and o.Eligible='No'