随机取记录问题!

yhd0411 2003-10-17 03:26:32
表里有几万条记录,怎么随机取20%差不多的记录?
...全文
24 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
changechange 2003-10-18
  • 打赏
  • 举报
回复
declare @str varchar(20)
select @str=cast(ceiling(0.2* count(*)) as varchar) from 表
exec('select top '+@str+' * from 表 order by newid()')

zjcxc 元老 2003-10-17
  • 打赏
  • 举报
回复
使用 TOP 和 PERCENT 限制结果集
TOP 子句限制返回到结果集中的行数。

TOP n [PERCENT]

n 指定返回的行数。如果未指定 PERCENT,n 就是返回的行数。如果指定了 PERCENT,n 就是返回的结果集行的百分比,如下所示:

TOP 120 /*Return the top 120 rows of the result set. */
TOP 15 PERCENT /* Return the top 15% of the result set. */.

如果一个 SELECT 语句既包含 TOP 又包含 ORDER BY 子句,那么返回的行将会从排序后的结果集中选择。整个结果集按照指定的顺序建立并且返回排好序的结果集的前 n 行。

限制结果集大小的另一种方法是在执行一个语句之前执行 SET ROWCOUNT n 语句。SET ROWCOUNT 与 TOP 的不同之处在于:

SET ROWCOUNT 限制适用对 ORDER BY 取值后在结果集中生成行。如果指定了 ORDER BY,SELECT 语句将在从某个已根据指定的 ORDER BY 分类进行了排序的值集中选择 n 行后终止。


TOP 子句适用于指定了该子句的单个 SELECT 语句。在执行另一个 SET ROWCOUNT 语句之前,SET ROWCOUNT 会一直有效,例如执行 SET ROWCOUNT 0 将会关闭此选项。
zjcxc 元老 2003-10-17
  • 打赏
  • 举报
回复
--随机从表中取20%的记录.
select top 20 PERCENT * from 表 order by newid()
sdhdy 2003-10-17
  • 打赏
  • 举报
回复
select top 5000 * from tablename order by newid()
---------------------------------------- 主要是这里
yujohny 2003-10-17
  • 打赏
  • 举报
回复
declare @str varchar(20)
select @str=cast(ceiling(0.2* count(*)) as varchar) from 表
exec('select top '+@str+' * from 表 order by newid()')
yujohny 2003-10-17
  • 打赏
  • 举报
回复
select top 10000 * from 表 order by newid()
这样就是取表里的随机10000条数据

34,575

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧