|
楼主 |
发表于 2013-4-22 10:46
|
显示全部楼层
在和弦处等你 发表于 2013-4-22 10:17
看了答案后,从内往外数,第二层嵌套没有弄懂,望答疑,谢谢:这样能随机产生相等数量的15名且不重复的2组学 ...
- SELECT TOP 30 IIF(A.学生=B.学生,'2组','1组') as 组别,A.学生 FROM [名单$]A LEFT JOIN
- (SELECT TOP 15 学生 FROM [名单$]ORDER BY RND(LEN(学生)))B ON A.学生=B.学生
- ORDER BY B.学生 DESC,RND(LEN(A.学生))
复制代码
这个涉及语句的执行顺序。ORDER BY比TOP优先执行,若不指定ORDR BY子句,那么TOP以数据源的位置顺序取数。
你将TOP 30去掉,然后查看返回的结果,这个就是TOP要进行取数时的数据源:
- SELECT IIF(A.学生=B.学生,'2组','1组') as 组别,A.学生 FROM [名单$]A LEFT JOIN
- (SELECT TOP 15 学生 FROM [名单$]ORDER BY RND(LEN(学生)))B ON A.学生=B.学生
复制代码 要查看完整的TOP 30对应的数据源结果,可使用下面语句:
- SELECT * FROM [名单$]A LEFT JOIN
- (SELECT TOP 15 学生 FROM [名单$]ORDER BY RND(LEN(学生)))B ON A.学生=B.学生
复制代码 为确保查看是真实的情况,请在连接属性中取消勾选【保留列排序/筛选/布局】选项:
|
评分
-
1
查看全部评分
-
|