随机抽取记录问题

hanbb1982 2013-05-03 11:52:12
比如我有个表,里面有个ID是从1至20,那么我随机抽取其中的10条记录出来,可以写
select top 10 id from 表 order by newid()
但如果我想在这些随机记录中必须包括有ID号为,1、2、3的记录,得如何写?
...全文
271 9 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
my_baby_2009 2013-06-24
  • 打赏
  • 举报
回复
3个PHP随机字符串函数生成器 你可以参考下,看有帮助不?!
524929657雯 2013-05-10
  • 打赏
  • 举报
回复
haitao 2013-05-08
  • 打赏
  • 举报
回复
引用 3 楼 SQL77 的回复:
select * from tb where id between 1 and 3 union all select * from (select top 7 * from tb where id >=4 order by newid())t
是这个 其他的相当于 那3个与随机的10个里 再随机选10个
u010618467 2013-05-08
  • 打赏
  • 举报
回复
专注or全面 2013-05-03
  • 打赏
  • 举报
回复
那你把这个三条查出来,再随机查询不包含这三条数据的七条出来
黄_瓜 2013-05-03
  • 打赏
  • 举报
回复
SELECT DISTINCT TOP 10 [id] FROM ( select id,newid() AS [newid] 表 where id in(1,2,3) union select top 10 id,newid() AS [newid] from 表 order by [newid] ) AS t
daiyueqiang2045 2013-05-03
  • 打赏
  • 举报
回复
with cte
as
(
	select  id,newid() AS [newid]  表 where id in(1,2,3)
	union 
	select  top 10 id,newid() AS [newid] from 表 order by [newid]
)
SELECT * FROM 
from
cte 
order by id
SQL77 2013-05-03
  • 打赏
  • 举报
回复
引用 3 楼 SQL77 的回复:
select * from tb where id between 1 and 3 union all select * from (select top 7 * from tb where id >=4 order by newid())t
如果你1到3没有.可能就没有10条记录.按1楼改改
SQL77 2013-05-03
  • 打赏
  • 举报
回复
select * from tb where id between 1 and 3 union all select * from (select top 7 * from tb where id >=4 order by newid())t

22,302

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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