【问题标题】:sql - Update record using inner joinsql - 使用内连接更新记录
【发布时间】:2015-11-03 09:32:36
【问题描述】:

我正在使用系统,我必须根据 4 列更新字段 dupstat 重复记录,即 cname、fname、mname , 多布。我还必须检查 eligibility 列是否包含值“No”。我有以下查询来找出重复记录:

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”强> = “否”

【问题讨论】:

    标签: sql sql-server sql-update inner-join


    【解决方案1】:

    您可以直接使用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' 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-01-14
      • 1970-01-01
      • 1970-01-01
      • 2013-04-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-16
      相关资源
      最近更新 更多