select * from 表 a
where 学生名称=(
select top 1 学生名称 from 表 where 所属班级=a.所属班级 order by newid())

解决方案 »

  1.   

    --测试--测试数据
    create table 表(学生名称 varchar(10),学生性别 varchar(10),年龄 int,所属班级 varchar(10))
    insert 表 select '张三','男',18,'三年一班'
    union all select '张四','男',18,'三年一班'
    union all select '张五','男',18,'三年一班'
    union all select '张六','男',18,'三年一班'
    union all select '李三','男',18,'三年二班'
    union all select '李四','男',18,'三年二班'
    union all select '李五','男',18,'三年二班'
    union all select '李六','男',18,'三年二班'
    union all select '王一','男',18,'四年一班'
    union all select '王二','男',18,'四年二班'
    union all select '王三','男',18,'四年三班'
    union all select '王四','男',18,'四年四班'
    go--查询
    select * from 表 a
    where 学生名称=(
    select top 1 学生名称 from 表 where 所属班级=a.所属班级 order by newid())
    go--删除测试
    drop table 表/*--测试结果学生名称       学生性别       年龄          所属班级       
    ---------- ---------- ----------- ---------- 
    张三         男          18          三年一班
    李四         男          18          三年二班
    王一         男          18          四年一班
    王二         男          18          四年二班
    王三         男          18          四年三班
    王四         男          18          四年四班(所影响的行数为 6 行)
    --*/