• http://www.zuowenyi.com
  • 0

    我的帖子

    个人中心

    设置

      发新话题
    比如说,有一个SQl表,里面有很多数据,怎么随机在这个表里面删除30%这个表的数据



    DELETE TOP 30 PERCENT
    FROM [MyTab]
    WHERE YourConditions



    SQL Server 2008 MCITP | SQL Server 2012 MCSE | SQL Server MVP | MySQL 5.6 OCP | Oracle 11g OCP
    DELETE FROM [MyTab]
    WHERE YourIdField IN
    (
      SELECT TOP 30 PERCENT
        YourIdField
      FROM [MyTab]
      WHERE YourConditions
      ORDER BY NEWID()
    )



    SQL Server 2008 MCITP | SQL Server 2012 MCSE | SQL Server MVP | MySQL 5.6 OCP | Oracle 11g OCP
    DELETE
    FROM Person.Person
    TABLESAMPLE (30 PERCENT)

    随机取样30%?



    我的51CTO博客

    SQL Server MCITP, MVP, MCT, DBA
    DELETE
    FROM Person.Person
    TABLESAMPLE (30 PERCENT)

    随机取样30%?



    引用:
    原帖由 iolfno 于 2017-7-17 23:29 发表
    DELETE
    FROM Person.Person
    TABLESAMPLE (30 PERCENT)

    随机取样30%?
    是随机取样删除,你可以了解下 TABLESAMPLE 函数。
    同样的表同样的数据,执行这条语句,每次删除的东西都不一样。
    自己可以做个测试。 select   * from  tablename  TABLESAMPLE (30 PERCENT) 看看结果是不是随机取样




    本帖最后由 lantshirt 于 2017-7-18 11:45 编辑
    提示: 作者被禁止或删除 内容自动屏蔽
    很厉害



    oracle 里面是用sample()
    本帖最近评分记录
    • seusoftware 无忧币 +11 热心广援 2017-8-9 10:51



    现在居然可以这样玩了,厉害



    现在居然可以这样玩了,厉害



    刚刚试了下 tablesample 虽然说随机但是有很大一部分是连续的.  


    然后我写了一个sql也是能达到效果

    DECLARE @Num BIGINT
    DECLARE @sum BIGINT
    DECLARE @ID BIGINT
    SELECT @SUM=COUNT(1) FROM test.dbo.ZY_HisTrack
    SET @Num=@SUM*0.3
    --PRINT @sum
    WHILE @Num>0
    BEGIN
        SET @ID=round(RAND()*@SUM,0)
        DELETE test.dbo.ZY_HisTrack WHERE ID=@ID
        IF @@ROWCOUNT<>0
          BEGIN
              SET @Num=@Num-1
              PRINT @ID
          END
        ELSE
           SET @Num=@Num
        ---删除
    END

    随机删除30%的的数据

    我这里是有一个字段记录自增长的. 如果没有或者已经被删除的话使用下
    改为 ROW_NUMBER()做下排序. 不过数据量大的话我这种写法不建议还是使用
    tablesample




    本帖最后由 陈嘉 于 2017-9-21 15:43 编辑
    测试一下咯



    听说可以领取无忧币



    哈哈哈哈哈



    我就是来蹭无忧币的



    我也是来蹭的



    51cto的测试



    不错,手机版测试




    ‹‹ 上一贴:ASP中SQL查询表名用数组变量时出错,求助? ...   |   下一贴:教你管理SQL实例(1)数据库实例 ››
      发新话题
    快速回复主题
    关于我们 | 诚聘英才 | 联系我们 | 网站大事 | 友情链接 |网站地图
    Copyright©2005-2017 51CTO.COM
    本论坛言论纯属发布者个人意见,不代表51CTO网站立场!如有疑义,请与管理员联系:bbs@51cto.com
    鹤岗市论坛 永兴县论坛 莎车县论坛 锦州论坛 镇赉县论坛
    肃南裕固族自治县论坛 齐齐哈尔市论坛 尼玛县论坛 三府湾论坛 饶河镇论坛