龙川| 日照| 泸县| 石龙| 达坂城| 青铜峡| 宾川| 凭祥| 保定| 彬县| 浑源| 达州| 通海| 梅里斯| 南丰| 永城| 太仆寺旗| 杨凌| 莱州| 宁波| 蠡县| 江永| 石棉| 玛曲| 枝江| 河北| 石柱| 阿荣旗| 英德| 裕民| 永新| 尼玛| 宜秀| 靖州| 汕头| 河曲| 鄂托克旗| 波密| 建阳| 红原| 柘荣| 三原| 长岭| 尤溪| 阜平| 龙门| 龙海| 鹤山| 驻马店| 虎林| 西畴| 古交| 乾安| 乌审旗| 柘荣| 中阳| 台东| 桂东| 望江| 富阳| 门头沟| 金塔| 南票| 石林| 平鲁| 辽源| 赤壁| 镇赉| 龙江| 广德| 弥渡| 香港| 中山| 白银| 葫芦岛| 云霄| 达坂城| 金沙| 弓长岭| 井陉| 台江| 仪陇| 布拖| 阿克苏| 讷河| 会理| 翠峦| 广丰| 户县| 简阳| 聂拉木| 坊子| 根河| 柘城| 申扎| 南丹| 郑州| 吉木萨尔| 宁波| 宜宾县| 临泉| 永昌| 汤旺河| 哈密| 恩施| 延安| 吉安市| 佳县| 莫力达瓦| 景泰| 黔西| 平原| 进贤| 古冶| 定远| 西盟| 霍州| 台江| 应城| 察哈尔右翼中旗| 集贤| 开鲁| 曲周| 集安| 宜君| 开封市| 九台| 平塘| 通河| 长垣| 中阳| 托克逊| 漳平| 远安| 寿光| 无为| 鹿寨| 南皮| 吴川| 武强| 牡丹江| 太谷| 寒亭| 万安| 德庆| 开原| 肃北| 台北市| 定陶| 昂昂溪| 屏山| 黄岩| 元江| 临西| 台中市| 齐齐哈尔| 苏家屯| 南岔| 勐腊| 鹿邑| 基隆| 钟祥| 绵竹| 云集镇| 文水| 黟县| 定州| 昌邑| 云龙| 瑞昌| 济南| 襄樊| 惠民| 石河子| 蒙山| 三门| 桐柏| 白水| 永福| 山东| 饶河| 会理| 德庆| 阆中| 奇台| 肃南| 邵阳县| 斗门| 淄川| 江西| 宣化县| 仲巴| 红岗| 平坝| 覃塘| 乌拉特后旗| 安徽| 海盐| 阜宁| 深圳| 淮阳| 乌当| 富源| 会同| 嘉鱼| 靖州| 汤阴| 建始| 长寿| 荣县| 池州| 微山| 中宁| 甘谷| 红古| 明溪| 碌曲| 带岭| 易门| 邻水| 淄博| 寿阳| 阿拉善左旗| 迭部| 会理| 久治| 岢岚| 东明| 巴中| 彭州| 沅江| 淳安| 高雄县| 麻栗坡| 元阳| 玉溪| 融安| 金坛| 新绛| 大洼| 蒲江| 九龙坡| 郯城| 信阳| 商水| 克拉玛依| 叙永| 通山| 河间| 呈贡| 苏州| 襄樊| 西峡| 炎陵| 太仓| 南岔| 鄂伦春自治旗| 平果| 巴中| 衡东| 柳城| 嘉义县| 眉山| 霍州|
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
鸡洲论坛 繁昌县论坛 金钗镇论坛 都匀市论坛 东乡族自治县论坛
马交石炮台马路论坛 湘西土家族苗族自治州论坛 山丹县论坛 大磨刀论坛 刘圩镇论坛