2010-01-06 32 views
9

Tôi đã tạo chế độ xem sql và tôi cần sắp xếp kết quả được chọn bằng cách sử dụng ORDER BY trên 4 trường, nhưng tôi nhận được thông báo rằng ORDER BY không thể được sử dụng trong chế độ xem trừ khi Tôi dùng TOP. Ai đó có thể giải thích lý do tại sao TOP là cần thiết, và có ai đó có một cách giải quyết để phân loại trong một khung nhìn sql?Cách sắp xếp trong một chế độ xem sql

Cảm ơn.

Trả lời

-1

Nếu sử dụng SQL Server, bạn có thể làm

select top 100 percent * 
from MyTable 
order by MyColumn 

Tất nhiên bạn không nên sử dụng một * theo quan điểm của mình, tôi chỉ sử dụng nó ở đây cho ngắn gọn.

+3

từ năm 2005 trình tối ưu hóa sql loại bỏ thứ tự này do vậy công cụ này không hoạt động! hãy cẩn thận với điều đó. –

+0

Bạn có tài liệu tham khảo? – RedFilter

+1

chắc chắn! trực tiếp từ nhóm tối ưu hóa truy vấn máy chủ sql: http://blogs.msdn.com/queryoptteam/archive/2006/03/24/560396.aspx –

17

bạn không cần sắp xếp chế độ xem. một cái nhìn giống như một bảng để bạn sắp xếp nó khi bạn chọn từ nó:

select * from yourView order by yourColumns 
+2

* * Câu trả lời đúng – gbn

5

Không có đảm bảo đầu ra của xem sẽ được đặt hàng

Chỉ ORDER ngoài cùng THEO áp dụng cho bộ kết quả : không phải bất kỳ cái bên trong nào. Vì vậy, chỉ TRÌNH TỰ DO này có thể bảo đảm công việc:

SELECT col1, col2, FROm MyView ORDER BY col2 

Bạn có thể thêm nó vào quan điểm hay bảng có nguồn gốc và nó buộc "intermediate materialisation" vì kết quả phải được đặt hàng. Tuy nhiên, cho SQL Server 2005 trở lên, bạn phải sử dụng TOP 2000000000 không TOP 100 PERCENT (trừ rằng HF rằng Daniel Vassallo đề cập!)

người sẽ sử dụng tầm nhìn của bạn với một trật tự khác với nội tại một số điểm quá.

0

Bạn có thể thử:

CREATE VIEW View_Products 
AS 
SELECT ProductID, ProductName, UnitPrice, CreateDate FROM Products 
Order by CreateDate DESC 
OFFSET 0 ROWS 
0

sẽ tạo một chỉ mục trên cột mà bạn có ý định để sắp xếp xem giúp?

Các vấn đề liên quan