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)
完美解决

浙公网安备 33010602011771号