Sql 除非还指定了TOP、OFFSET或FOR XML,否则ORDER BY子句在视图、内联函数、派生表中无效

Sql 除非还指定了TOP、OFFSET或FOR XML,否则ORDER BY子句在视图、内联函数、派生表中无效,sql,views,Sql,Views,-我一直遇到这个错误,但一旦我删除最后一行并尝试创建一个视图,它就会消失。 我不希望使用top/for xml关键字,但我希望使用此查询创建此视图。SQL表和结果集表示无序集,除非明确包含ORDER BY。这也包括子查询。因此,子查询的结果是无序的——它们必须是无序的。有人下订单根本没有意义 一些数据库放宽了这一限制。但是,SQL Server非常: 视图定义中的SELECT子句不能包括以下内容: ORDER BY子句,除非select中还有TOP子句 选择语句系统的列表\u CAPS\u图标\

-我一直遇到这个错误,但一旦我删除最后一行并尝试创建一个视图,它就会消失。
我不希望使用top/for xml关键字,但我希望使用此查询创建此视图。

SQL表和结果集表示无序集,除非明确包含ORDER BY。这也包括子查询。因此,子查询的结果是无序的——它们必须是无序的。有人下订单根本没有意义

一些数据库放宽了这一限制。但是,SQL Server非常:

视图定义中的SELECT子句不能包括以下内容:

ORDER BY子句,除非select中还有TOP子句 选择语句系统的列表\u CAPS\u图标\u important.jpg important ORDER BY子句仅用于确定要删除的行 由视图定义中的TOP或OFFSET子句返回。命令 BY子句不保证在查询视图时得到有序的结果, 除非在查询本身中也指定了ORDER BY


SQL表和结果集表示无序集,除非明确包含ORDER BY。这也包括子查询。因此,子查询的结果是无序的——它们必须是无序的。有人下订单根本没有意义

一些数据库放宽了这一限制。但是,SQL Server非常:

视图定义中的SELECT子句不能包括以下内容:

ORDER BY子句,除非select中还有TOP子句 选择语句系统的列表\u CAPS\u图标\u important.jpg important ORDER BY子句仅用于确定要删除的行 由视图定义中的TOP或OFFSET子句返回。命令 BY子句不保证在查询视图时得到有序的结果, 除非在查询本身中也指定了ORDER BY


请从内部查询中删除ORDERBY子句并将其放在外部,否则必须在内部查询中使用Top子句。您一定会得到您的解决方案,happy sql bro:

实际上,当您创建视图时,您可以在查询中使用它,所以如果您可以在查询中使用它,那么您肯定会在创建的视图上应用order by,这意味着视图将被创建为原始表,而不使用order by,然后在创建的数据集视图上应用order by子句


希望它能消除混乱。

请从内部查询中删除ORDERBY子句并将其放在外部,否则您必须在内部查询中使用Top子句。您一定会得到您的解决方案,happy sql bro:

实际上,当您创建视图时,您可以在查询中使用它,所以如果您可以在查询中使用它,那么您肯定会在创建的视图上应用order by,这意味着视图将被创建为原始表,而不使用order by,然后在创建的数据集视图上应用order by子句


希望它能消除混淆。

我在这个网站上看到过类似的问题,但我无法确定我的查询有什么问题。请从视图定义中删除Order By,并在选择视图时使用它。从V_booksOut3中选择*按借贷者订购_LName@Prdp谢谢,这很有效。我在这个网站上看到过类似的问题,但我无法确定我的查询出了什么问题。请从视图定义中删除Order By,并在选择视图时使用它。从V_booksOut3中选择*按借贷者订购_LName@Prdp谢谢,这很有效。来自评论:嗨,这篇文章似乎没有为这个问题提供答案。请编辑您的答案并加以改进,或者将其作为评论发布。From Review:您好,这篇文章似乎没有为问题提供答案。请编辑您的答案并加以改进,或者将其作为评论发布。
use library
go

create view V_booksOut3
as
SELECT
(select Book.Book_Title from Book where LB.B_ID=Book.Book_ID) as 'Book_Title',
L.Loaner_FName,
L.Loaner_Lname,
L.Loaner_Phone,
L.Loaner_Email,`enter code here`
LB.bookDueDate
FROM Loaner L
inner join Loaner_Book LB
ON L.Loaner_ID=LB.L_ID
WHERE LB.isActive = 1
ORDER BY L.Loaner_LName;