2015-11-03 95 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'