81  
查询码: 00000459
除非另外还指定了 TOP、OFFSET 或 FOR XML,否则,ORDER BY 子句在视图、内联函数、派生表、子查询和公用表表达式中无效。 - 花生打代码会头痛 - 博客园
来源:https://www.cnblogs.com/chenwenbin/articles/7125376.html
作者: 周杨 于 2023年03月23日 发布在分类 / 计算机应用 / 数据库 / SQLSERVER ,于 2023年03月23日 编辑
查询 select 博客 函数 头痛 b.actid 花生 代码 总数 视图

默认情况下,如果在子查询,函数,视图中尝试去使用ORDER BY,那么可能会遇到下面的错误

除非另外还指定了 TOP、OFFSET 或 FOR XML,否则,ORDER BY 子句在视图、内联函数、派生表、子查询和公用表表达式中无效。

例如:


select b.ActID,a.ActName,b.总数 from act a
inner join (select g.ActID,sum(g.Num) as '总数' from ActGift_J g
group by g.ActID order by sum(g.Num) desc ) b
on a.ActId =b.ActID




原因:针对一个表的SELECT其实并不是返回一个表,而是一个游标。

解决方案:在子查询配合TOP 100 PERCENT用


select b.ActID,a.ActName,b.总数 from act a
inner join (select top 100 PERCENT g.ActID,sum(g.Num) as '总数' from ActGift_J g
group by g.ActID order by sum(g.Num) desc ) b
on a.ActId =b.ActID




 历史版本

备注 修改日期 修改人
CREAT 2023-03-23 11:43:05[当前版本] 系统管理员

 附件

附件类型

PNGPNG

知识分享平台 -V 5.1.4 -大信谛威