随机删除75%的表

时间:2014-01-19 01:01:01

标签: sql-server sql-server-2012

尝试制作较小的样本数据库,但数据仍具有统计学意义。如何从表中删除x%的行?一直在使用NEWID()函数。

2 个答案:

答案 0 :(得分:5)

DELETE 
FROM TABLE_NAME
WHERE PK IN (SELECT TOP (75) PRECENT PK
             FROM TABLE_NAME
             ORDER BY NEWID())

Martin Smith的建议

DELETE T 
FROM (SELECT TOP (75) PERCENT * 
      FROM TABLE_NAME 
      ORDER BY NEWID()) T

答案 1 :(得分:2)

另一种方式是:

DELETE 
FROM table_name
WHERE ABS(CHECKSUM(NEWID())) % 100 < 75 ;

将完全删除75%的行,但对于更大的表格会更快,因为它不需要进行排序。