远安| 冷水江| 黄山市| 合作| 开化| 德阳| 新建| 海口| 阳西| 中方| 昭通| 唐海| 贵溪| 乌拉特中旗| 汉沽| 威宁| 什邡| 新会| 灞桥| 阳春| 太原| 灵武| 崇左| 孟津| 红安| 临湘| 广饶| 富川| 玉林| 献县| 秭归| 沧源| 贵德| 黄山区| 阿克塞| 安吉| 界首| 枝江| 嘉善| 长沙| 青龙| 昂昂溪| 荥经| 天全| 华蓥| 水富| 利川| 西山| 扬中| 治多| 淳安| 东西湖| 小金| 清水| 缙云| 五营| 富蕴| 江宁| 行唐| 怀集| 杭锦旗| 孝感| 株洲县| 开封市| 甘南| 科尔沁左翼中旗| 惠东| 凤阳| 四平| 揭阳| 宜春| 黄骅| 沐川| 永定| 朝天| 岑溪| 博罗| 新荣| 莱山| 阿克陶| 青白江| 旌德| 乌马河| 蒙山| 海口| 凌源| 城口| 曲水| 大冶| 会泽| 南岳| 龙门| 河池| 丰润| 双江| 敖汉旗| 长春| 辉南| 坊子| 雅安| 水城| 昆山| 安国| 托里| 嘉义县| 苏尼特左旗| 济南| 济南| 台中市| 亳州| 尼木| 东兰| 芒康| 张家界| 吐鲁番| 蒲县| 宁津| 娄底| 长白山| 库尔勒| 陵县| 头屯河| 上林| 武当山| 清河门| 丹棱| 阿拉善左旗| 永胜| 彭山| 西盟| 丹巴| 刚察| 长治市| 双峰| 邳州| 浮山| 图木舒克| 上饶县| 顺德| 威宁| 荥经| 盐源| 特克斯| 东西湖| 柳河| 四平| 成县| 海口| 文安| 博乐| 文昌| 垦利| 沧州| 松溪| 合山| 瓯海| 金沙| 谷城| 兴义| 连云港| 山阳| 高淳| 凯里| 南澳| 南海| 同江| 武平| 沁阳| 江陵| 永胜| 合川| 马鞍山| 宁蒗| 双柏| 山阴| 麻江| 隆林| 贵池| 平利| 永清| 凤凰| 泾源| 贵定| 连城| 响水| 洛南| 云霄| 呼图壁| 旬邑| 灌阳| 华坪| 珙县| 永修| 禄劝| 新宁| 抚宁| 奎屯| 陇县| 临泽| 桦川| 玉龙| 彭山| 本溪市| 牙克石| 普宁| 香格里拉| 锦屏| 东阳| 灌云| 额敏| 仪征| 潜江| 曲麻莱| 沛县| 乌兰察布| 浦东新区| 湖南| 紫阳| 湟中| 蓝田| 营山| 徽州| 平鲁| 清涧| 田东| 图木舒克| 蓝山| 册亨| 射阳| 大石桥| 吴江| 息县| 万年| 仁寿| 鄂州| 崇礼| 谢通门| 祁门| 扎囊| 砀山| 谷城| 杭锦后旗| 江山| 福州| 宜君| 青河| 丹巴| 马关| 长汀| 黄冈| 集美| 滑县| 定边| 石城| 怀远| 兴海| 江夏| 米脂| 汶川| 突泉| 神农顶| 罗田| 肃宁| 芮城|
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
中沙群岛的岛礁及其海域论坛 官渡区论坛 连平县论坛 南乐县论坛 久治县论坛
四方区论坛 朗县论坛 南宁市仙湖开发区论坛 大武口区论坛 湖州论坛