我完成个sql查询其表有两个字段学号,等级 如下

来源:百度知道 编辑:UC知道 时间:2024/06/11 23:52:50
这个表中有多条数据这只是个例子 请指教啊

初学着啊

我想完成一个sql的查询其表有两个字段学号,等级
如下 001 优
002 优
003 优
004 中
005 中
006 一般
007一般 我想从每个等级中随机抽出两个人 不知该怎么写啊 请指教
会飞的青蛙:
你的答案我试了可是不行啊!!
如果用了union 运算order by的字句中必须出现选择中的列
啊!!而且
S ELECT TOP 2 * FROM tablename where 等级='优'
union all
SELECT TOP 2 * FROM tablename where 等级='中'
union all
SELECT TOP 2 * FROM tablename where 等级='一般'
ORDER BY 学号 应该是这样的呵呵 所以就不能实现随即查询
谢谢你 你的答案给了我好多的启事thanks

前些天在知道上看到一个兄弟解决这个问题的好方法,今天拿出来分享一下。

select *
from 表 a
where [学号] in (select top 2 学号 from 表 where 等级=a.等级 order by newid())
order by 等级

SELECT TOP 2 * FROM tablename where 等级='优' ORDER BY RND(等级)
union all
SELECT TOP 2 * FROM tablename where 等级='中' ORDER BY RND(等级)
union all
SELECT TOP 2 * FROM tablename where 等级='一般' ORDER BY RND(等级)

select top 2 * from [list] where [type]=优 order by newid()

这是随机抽取数据库记录的代码
top 2表示抽取2个
[type]=优 表示抽取的是"优"的记录

select top 2 * from [list] group by [list] order by newid()
order by newid()是按随机数排序,top 2取前两条

top 2 不是记录的前两条吗?不是要随机的吗?这符合楼主的要求吗?