zoukankan      html  css  js  c++  java
  • delete 重复行;delete join ;update join

    delete  dbo.GI_Rep_Qty_Emp_Combine from dbo.GI_Rep_Qty_Emp_Combineleftjoin dbo.qGI_INP_EMP_CCSDON dbo.qGI_INP_EMP_CCSD.Employee=dbo.GI_Rep_Qty_Emp_Combine.Employeewhere GI_Rep_Qty_Emp_Combine.LedgerYear='2010'and GI_Rep_Qty_Emp_Combine.Quarter='1'andisnull(qGI_INP_EMP_CCSD.Employee,'')<>''

    这两句相同,去掉了Inner join

    DELETE  FROM dbo.GI_Rep_Qty_Emp_Combine

    WHERE(Employee  IN(SELECT EmployeeFROM dbo.qGI_INP_EMP_CCSD))  AND(LedgerYear ='2012')AND(Quarter='1')

    一、原来只知道update是可以有inner join ,前几天搞到一个相关东西的时候才知道原来delete也是有inner join .现将两种相关的语法陈列如下,有需要的朋友可以瞄瞄,~~~~~

    SQL:

    UPDATE

     

    update a

    set a.employeestrid=b.pressworkid

    from cemployee a inner join ccard b on a.cardid=b.cardid  --其实这个大多都知道的,呵~在这里啰嗦了点,嘻嘻~~~

    DELETE

        Deletefrom econsumedata from econsumedata inner join ccard on econsumedata.cardid=ccard.cardid

     

    我们再讲一下删除重复数据的事情,呵~~~其实删除重复数据我一般就使用两种模式。

    1、   要最简单,就是先把不重复的查询出来,将不重复的数据先存到临时表里,再将正式表的数据全部删除掉,再使用select insert进行数据的插入,当然这咱情况只适用于数据可以停止下来。

    2、   我们经常使用的数据库可能需要你长时间的都在运营,所以前面那种方法就不再可行了,那就需要你直接运行SQL语句,对实际情况进行分析后进行删除,一般我们遇到的重复数据都是大多栏位一样,总会有一个栏们不一样这样的重复数据,请找到这个不一样的栏位,作为一个标志物,再进行利用完成删除重复数据的工作。

    E.G.

    select deviceid,recordid,cardid,cardvalue,usecount,consumemoney,count(cardid) as card,max(consumedate) as data into #temp1 from econsumedata

    whereconvert(char(10),consumedate,21) between '2006-01-01' and '2007-12-31'

    group by deviceid,recordid,cardid,cardvalue,usecount,consumemoney

    having count(cardid)>1

    order by cardid,usecount        --将相应的不重复的数据查询出来,这里因为其标志本栏位是时间,所以我取了这些重复数据中拥有最大时间的一笔作为正确的数据查询出来放到临时表。

    go

    delete A from econsumedata A

    inner join #temp1 B on A.deviceid=B.deviceid and A.recordid=B.recordid

    and A.cardid=B.cardid and A.cardvalue=B.cardvalue and A.usecount=B.usecount

    and A.consumemoney=B.consumemoney and A.consumedate<>B.data

    --(最后的此条件,如若改成=则表示的是留下来的是这个临时表的那一笔数据,可实现巧妙转换)

    --利用临时表进行以前我们前面所讲到的delete inner join (删除时利用表间关联)来完成删除重复数据的功能.

    go

    droptable #temp1

  • 相关阅读:
    Mimblewimble:新型的隐私保护协议
    权益证明生态系统
    理解去中心化身份
    TPS 是一种糟糕的评价标准
    以太坊 2.0 :双生以太奇谭
    以太坊 2.0:信标链
    以太坊 2.0:验证者详解
    论共识机制
    以太坊钱包开发系列
    将不确定变成确定~LINQ DBML模型可以对应多个数据库吗
  • 原文地址:https://www.cnblogs.com/honkcal/p/2780459.html
Copyright © 2011-2022 走看看