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为条件进行操作。

  • 相关阅读:
    android 如何引用jar包
    ExoPlayer + 边缓存边播放
    adb打开系统设置的命令
    android 8.0 适配(总结)
    android 7.0适配(总结)
    android 6.0适配(总结)
    常用adb命令
    nginx 简介
    Marshmallow 的用法
    python 自动生成当前项目的requirements文件
  • 原文地址:https://www.cnblogs.com/Uest/p/5163323.html
Copyright © 2011-2022 走看看