Làm thế nào để SQL Server tìm ra thứ tự của các bản ghi trong tập kết quả thực hiện truy vấn?
Tôi đang cố gắng để làm cho đầu hoặc đuôi của nó nhưng thấy mình gãi đầu. Khi tôi thay đổi các trường tôi đang chọn thứ tự cũng thay đổi. Khi tôi thực thi SQL dưới đây với một SELECT *
bản ghi tôi có cùng các bản ghi nhưng theo một thứ tự khác nhau.
SELECT TOP (900)
AD.ATTACHMENTID,
AD.NAME,
AD.ISINLINE,
AD.INSERTEDDATETIME,
ATMT.ATTACHMENTBLOB,
U.UFID
FROM ATTACHMENTDETAIL AD WITH (NOLOCK)
INNER JOIN MESSAGEATTACHMENT MA ON MA.ATTACHMENTID = AD.ATTACHMENTID
INNER JOIN ATTACHMENT ATMT ON ATMT.ATTACHMENTID = AD.ATTACHMENTID
INNER JOIN MESSAGE MSG ON MSG.ID = MA.MESSAGEID
INNER JOIN MESSAGEDETAIL MD ON MD.MESSAGEID = MA.MESSAGEID
INNER JOIN [USER] U ON U.ID = MD.USERID
LEFT OUTER JOIN XmlExtractionMapping XM ON MA.MESSAGEID = XM.MessageId
WHERE AD.FILEBOXTOKEN IS NULL
AND (XM.XMLEXTRACTIONDATE IS NOT NULL OR
(MSG.MESSAGESOURCEID = 1 AND MD.FolderId <> -4))
AND AD.ISINLINE = 'FALSE'
ORDER BY
mệnh đề, SQL Server (và bất kỳ RDBMS nào khác) làm bất cứ điều gì nó cảm thấy thích .
NOLOCK
- bạn sẽ thấy tất cả các loại lý do tại sao bạn không nên sử dụng nó. Để biết thêm thông tin, hãy xem sqlblog.com/bloss/aaron_bertrand/archive/2009/10/11/NH