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;
- 我一直遇到这个错误,但是一旦我删除了最后一行并尝试创建一个视图,它就会消失。 我不想使用top / for xml关键字,但我希望使用此查询创建此视图。
答案 0 :(得分:0)
除非明确包含ORDER BY
,否则SQL表和结果集代表无序集。这也包括子查询。因此,子查询的结果是无序 - 它们必须是。拥有ORDER BY
只是没有意义。
有些数据库放宽了这个限制。但是,SQL Server非常explicit about it:
视图定义中的SELECT子句不能包含以下内容:
- ORDER BY子句,除非select中还有一个TOP子句 SELECT语句的列表System_CAPS_ICON_important.jpg重要
ORDER BY子句仅用于确定行 由视图定义中的TOP或OFFSET子句返回。命令 查询视图时,BY子句不保证有序结果, 除非在查询本身中也指定了ORDER BY。
答案 1 :(得分:0)
请从内部查询中删除Order by子句,然后将其放在外面,否则您必须在内部查询中包含Top子句。您一定会找到解决方案的,快乐的SQL兄弟:)
实际上,当您创建视图时,可以在查询中使用它,因此,如果您可以在查询中使用此视图,那么您一定在创建的视图上应用order by,这意味着视图将被创建为原始表,而没有order by,那么您可以应用order创建的数据集视图上的by子句。
希望它会消除混乱。