如何删除一个表中的50%的记录?或者80%,因为要做演示不可能用太大的数据
解决方案 »
- 请问那里有union all 语句的资料,如何使用的?
- SQL计算问题
- SELECT 门店, 年份 + 款式 + 颜色 + 尺码 AS 包装规格, SUM(数量) AS 销售数量 FROM DataTable GROUP BY 门店, 包装规格 提示列名无效
- 求一条等价的sql语句:
- SQL2008内存占用过大,有没有什么办法?
- 求助:关于循环数据库表设计问题
- 如何获得排序后的最前10000条记录的某些字段的和?
- 请问,怎样将一个storedproc 所返回的数据集,转成txt 文件 ?,(用SQL语句),因为是写程序!
- sql语句,进来look!
- 在pro*c中使用光标的高手请进
- sql server 2000能安装在VISTA下吗?
- 难题,请教高手
where id in (select top 50 percent id from t)
where 关键字 in (select top 80 percent 关键字 from t)
add id int identity(1,1)
select @int = count(*) * 0.8 from [一个表]--取的表内80%数据的个数
print @int
exec('delete top (' + @int + ')[一个表]) ')以上语句如果在Sql2005中执行可以写的更简单
delete top (select count(*) * 0.8 from [一个表] ) [一个表]
--如何删除一个表中的80%的记录declare @int int, @sql varchar(8000)select @int = count(*) * 0.8 from 表名 --取的表内80%数据的个数print @intset @sql = 'set rowcount ' + cast(@int as varchar(100)) + ' delete 表名 '
exec (@sql)
如果业务数据有一个前后的对应关系,这样删除会导致演示数据脱节。-------------
說得對,但你這樣寫
select @int = count(*) * 0.8 from 表名 --取的表内80%数据的个数print @intset @sql = 'set rowcount ' + cast(@int as varchar(100)) + ' delete 表名 '
exec (@sql)
count(*) * 0.8 ,也同樣是隨機的,如果這樣刪除,也一樣会导致演示数据脱节