我正在审查一个视图定义,如下所示。除非与TOP一起使用,否则我可以在视图定义中找到有关如何不遵守order by的信息。但不确定这种观点是否会按预期发挥作用。假设EmpployeeDup具有重复的EmpID,此视图将提供最新的所有员工记录。
当我测试时,这似乎按预期工作,但如果在sql server的View定义中使用时不能保证order by,我认为我们不能依赖它。
CREATE VIEW Test AS
SELECT * FROM
(SELECT *
,ROW_NUMBER() OVER (PARTITION BY EmpID ORDER BY LastupdateDatetime DESC) as row_num
FROM EmpployeeDup) as rows
WHERE row_num = 1
;
GO
答案 0 :(得分:0)
您的问题的答案是肯定的,您的查询将按预期工作。如果您在没有TOP,OFFSET或FOR XML的视图中尝试使用订单,那么“不尊重”并不会发生什么。你会得到一个错误错误
The ORDER BY clause is invalid in views, inline functions, derived tables, subqueries, and common table expressions, unless TOP, OFFSET or FOR XML is also specified.
它非常清楚地告诉您必须做些什么才能使查询正常工作。