我現在面臨的問題在SQL查詢的邏輯創建順序:SQL查詢邏輯順序由
查詢如下所示:
WITH CTE AS (SELECT CommentID ,
CommentUserName,
ReplyCommentID ,
CommentID AS ThreadID ,
CAST(CommentID AS VARCHAR(MAX)) AS PathStr,
HtmlComment ,
CommentPostDocumentID ,
CommentIsApproved,
CommentDate
FROM Blog_CommentDetails AS T WITH(NOLOCK)
WHERE ReplyCommentID IS NULL
UNION ALL
SELECT T.CommentID ,
T.CommentUserName,
T.ReplyCommentID ,
CTE.ThreadID ,
PathStr + '-'+ CAST(T.ReplyCommentID AS VARCHAR(MAX)) AS PathStr,
T.HtmlComment ,
t.CommentPostDocumentID ,
t.CommentIsApproved,
T.CommentDate
FROM Blog_CommentDetails AS T WITH(NOLOCK)
JOIN CTE
ON T.ReplyCommentID = CTE.CommentID
WHERE T.ReplyCommentID IS NOT NULL)
SELECT *
FROM CTE
WHERE CommentPostDocumentID = 15 AND CommentIsApproved=1
ORDER BY ThreadID, PathStr ,
CommentDate DESC;
它顯示了以下結果:
變化是,我需要在紀念日之後插入紀錄 - 144,因爲紀念和紀念的回覆是一樣的。
意味着每當有匹配commentid和replycommentid,在這種情況下它的144,然後用replycommentid行應回落到該行具有commentid 144
查詢房源的答案:
這個新訂單背後的邏輯是什麼? – DVT
訂單應該保持與我的初始查詢相同,如果replyid匹配,則需要插入,現在插入發生在最後,現有訂單不應該改變它應該保持不變 – SmartestVEGA
試着寫下你想要的單詞。關於查詢輸出的順序,只保證'ORDER BY'子句中指定的順序。否則,如果'SQL-Server'選擇不同的執行計劃,則即使對於相同的查詢,您也可能得到不同的結果順序。 – DVT