默认情况下,如果在子查询,函数,视图中尝试去使用ORDER BY,如:
1 | select * from (select * from tab where ID>20 order by userID desc) as a order by date desc |
可能会遇到下面的错误提示:
除非另外还指定了 TOP 或 FOR XML,否则,ORDER BY 子句在视图、内联函数、派生表、子查询和公用表表达式中无效。
- 上述错误产生的原因:针对一个表的SELECT其实并不是返回一个表,而是一个游标。如果一定要使用,则需要配合
TOP 100 PERCENT
使用:
1 | select * from (select top 100 percent * from tab where ID>20 order by userID desc) as a order by date desc |