随机删除75%的表

bum*_*una 5 sql-server sql-server-2012

试图建立一个较小的样本数据库,但仍然有一些统计相关的数据.如何从表中删除x%的行?一直在使用NEWID()函数.

M.A*_*Ali 5

DELETE 
FROM TABLE_NAME
WHERE PK IN (SELECT TOP (75) PRECENT PK
             FROM TABLE_NAME
             ORDER BY NEWID())
Run Code Online (Sandbox Code Playgroud)

Martin Smith的建议

DELETE T 
FROM (SELECT TOP (75) PERCENT * 
      FROM TABLE_NAME 
      ORDER BY NEWID()) T
Run Code Online (Sandbox Code Playgroud)

  • `删除T FROM(从TABLE_NAME中选择TOP(75)PERCENT*ORDER BY NEWID())T`会更有效率. (4认同)