漯河| 淄博| 贵州| 莱芜| 盐亭| 佛山| 胶州| 敖汉旗| 达尔罕茂明安联合旗| 恭城| 固阳| 常宁| 广汉| 白城| 林西| 罗源| 雷波| 博野| 赤壁| 祁县| 柳江| 巩义| 疏附| 花垣| 阳朔| 高唐| 太康| 马关| 阿克苏| 平定| 察布查尔| 眉山| 聊城| 广德| 阳春| 台中县| 台儿庄| 南宫| 平武| 凌海| 莱山| 祁阳| 惠农| 厦门| 南涧| 安宁| 赣榆| 天镇| 乌兰浩特| 始兴| 鹰手营子矿区| 忻城| 中卫| 原平| 山亭| 揭西| 泗县| 城口| 工布江达| 阳江| 阳城| 清徐| 湖口| 电白| 揭阳| 应城| 东山| 博白| 蛟河| 华亭| 许昌| 南县| 阿拉善右旗| 孝昌| 彰化| 漳浦| 漳州| 黑山| 图木舒克| 鲁山| 天水| 临泽| 望江| 新绛| 湛江| 房山| 平安| 大余| 同心| 沙县| 衡阳市| 昆明| 贡山| 临城| 环江| 华池| 孟村| 陵县| 句容| 措勤| 砚山| 会昌| 木垒| 渭南| 新源| 都安| 乌拉特前旗| 上海| 呈贡| 台东| 大渡口| 志丹| 攸县| 中宁| 永新| 平顺| 临泽| 措美| 永寿| 垫江| 克东| 阜康| 高平| 南昌县| 友谊| 祁连| 金沙| 苏州| 璧山| 金州| 保靖| 长兴| 武城| 双牌| 马祖| 滑县| 菏泽| 新巴尔虎左旗| 东平| 察哈尔右翼前旗| 翁牛特旗| 富源| 永胜| 万州| 梅河口| 五华| 台安| 铜陵县| 那曲| 乌审旗| 民丰| 黎城| 合肥| 陕县| 杜尔伯特| 金昌| 阳泉| 且末| 睢宁| 正蓝旗| 芒康| 西昌| 沙坪坝| 昌江| 延安| 洛浦| 株洲市| 宣化区| 麻城| 大竹| 徽县| 辉县| 大埔| 冕宁| 镇赉| 吴桥| 竹溪| 洛南| 五通桥| 黄岛| 金溪| 清苑| 凤山| 云安| 临汾| 云浮| 平陆| 汕尾| 新源| 浙江| 八宿| 大同区| 克什克腾旗| 榆社| 榕江| 莒南| 白河| 景宁| 伊吾| 安陆| 太康| 泌阳| 平顶山| 淇县| 北宁| 浑源| 平川| 三河| 松潘| 沙河| 南海| 辉南| 西昌| 加格达奇| 涞水| 饶平| 忻城| 依兰| 印江| 文县| 灵武| 富锦| 安图| 永顺| 环江| 碾子山| 昌吉| 壶关| 临漳| 类乌齐| 闵行| 让胡路| 肥东| 沙县| 永福| 道孚| 广河| 科尔沁左翼后旗| 单县| 那坡| 都安| 偃师| 临湘| 武强| 河源| 陆丰| 南票| 宁波| 陇川| 莆田| 定西| 汪清| 丹凤| 建阳| 陇县| 南充| 铁山| 绵阳| 宁化| 浦江| 海伦| 五台| 石林| 屏东|
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
后城文化街论坛 玉里论坛 尚德路论坛 五常市论坛 喇嘛教三世佛造像论坛
福鼎市论坛 阿不都拉乡论坛 龙鼓水道论坛 阿克齐镇论坛 方正县论坛