SQL查询:关于“另外还指定了 TOP、OFFSET 或 FOR XML,否则,ORDER BY 子句在视图、内联函数、派生表、子查询和公用表表达式中无效”的解决办法

SQL server 数据库

在进行数据库查询时,需要用到一些嵌套分组,排序,于是就出现了毛病,在内层分组,外层查询出现了错误,提示另外还指定了 TOP、OFFSET 或 FOR XML,否则,ORDER BY 子句在视图、内联函数、派生表、子查询和公用表表达式中无效
百度了一下,发现排序需要加上一些结果处理函数,但是如果我们对结果处理就不是所需要的内容,所以可以利用一下和where 1=1相似的特点,找到了一个TOP(100) PERCENT语句,可以起到这个作用。

  • 这是原来报错查询语句:
select * 
from student
where classname_en 
in(
	select b.classname_en
	from 
		(select a.quarter_stu,a.classname_en,count(a.count_stu) as count_numb
		from student a
		group by quarter_stu,classname_en) b
	order by count_numb desc)
  • 这是修改后的语句:
select * 
from student
where classname_en 
in(
	select TOP (100) PERCENT b.classname_en
	from 
		(select a.quarter_stu,a.classname_en,count(a.count_stu) as count_numb
		from student a
		group by quarter_stu,classname_en) b
	order by count_numb desc)

完美解决

posted @ 2021-12-16 14:51  l-relax  阅读(866)  评论(0)    收藏  举报