在子查询内部排序

pri*_*inn 3 sql sql-server sql-server-2005 view sql-order-by

SELECT u.id
FROM user u
WHERE u.id IN 
((SELECT l.id FROM location l WHERE l.id = ?id ORDER BY l.idLocation DESC )) 
Run Code Online (Sandbox Code Playgroud)

我想做的是让这个Order By工作.但是在视图中不可能有订单.如果不在视图中,我该怎么办?

SQL响应:

消息1033,级别15,状态1,行5 ORDER BY子句在视图,内联函数,派生表,子查询和公用表表达式中无效,除非还指定了TOP或FOR XML.

JNK*_*JNK 8

这里有两个问题.

1 - ORDER BY的意义毫无意义. 使用IN子查询时,ORDER无关紧要.

2 - ORDER BY视图应该在调用查询中,而不是在视图本身中.


gbn*_*gbn 7

你不能.只有最外层的 ORDER BY很重要.

SELECT * FROM MyView ORDER By Whatever唯一的方法.

任何中间排序(无论是ORDER BY还是巧合,或局域网的一部分)都会被忽略

  • 这是不正确的.许多情况都受益于内部的"ORDER BY".分页查询是一个常见的例子.在子查询中进行排序会获得在表范围内排序的行.最外层的ORDER BY仅在最终结果的范围内进行排序. (3认同)