zoukankan      html  css  js  c++  java
  • ROW_NUMBER

    16:23 2015/4/16 删除重复数据,连续被两位同事问到完全相同的重复记录如何删除只保留一条

    create table del_samerecords
    (id int,remark varchar(10))
    go
    insert into del_samerecords
    select 1,'a'
    go 2
    go
    insert into del_samerecords
    select 2,'b'
    go 3
    go
    --方式1
    ;with a as
    (
    select ROW_NUMBER() over(partition by id order by id) as rankid,* from del_samerecords
    )
    delete from a where rankid>1
    --方式2
    while(1=1)
    begin
        delete top (1) del_samerecords
        from del_samerecords,
        (select id from del_samerecords group by id having count(*)>1) b
        where del_samerecords.id=b.id
        if @@ROWCOUNT=0
        return
    end
    View Code

    当然最容易理解的是将唯一记录insert到临时表,然后delete原表对应数据,再将临时表中的数据insert到原表
    15:03 2016/1/27 随机修改表中记录

    --比如表里有1W条数据,随机修改表里100条
    DROP TABLE test
    CREATE TABLE test(id INT IDENTITY,idd int)
    DECLARE @i INT=1
    WHILE(@i<1000)
    BEGIN
        INSERT INTO test(idd) select @i
        SET @i=@i+1
    END
    
    ;WITH cte AS 
    (SELECT *,ROW_NUMBER() OVER (ORDER BY NEWID()) rankid FROM test
    )
    UPDATE cte SET idd=999999
    WHERE rankid<=10
    
    SELECT * FROM test
    WHERE idd=999999
    View Code

    两个例子都有借助ROW_NUMBER得到排序rankid,然后以rankid为条件进行操作。

  • 相关阅读:
    迭代器
    闭包函数与装饰器
    pyhton的函数
    文件处理
    Python2和Python3编码的区别
    hdu5080:几何+polya计数(鞍山区域赛K题)
    hdu1695:数论+容斥
    HDU3564 --- Another LIS (线段树维护最值问题)
    hdu1521:排列组合---指数型母函数
    poj1014:母函数+优化
  • 原文地址:https://www.cnblogs.com/Uest/p/5163323.html
Copyright © 2011-2022 走看看