今天咱們討論一個簡單的問題,因爲是剛想到怕忘記記錄,因此一個簡單的問題寫一個博客有點兒浪費。不過技術在於理解,在於知其然也要知其因此然,仍是記錄一下同時也但願能幫到你們。SQL查詢會有不少博客,但願本身能耐心的寫下去,鞏固本身的知識。spa
你們知道SQL中有一組關鍵字叫作ORDER BY,在上一篇博客中已經提到過。他是最後執行的,用來排序 (ORDER BY 字段名 DESC 和ORDER BY 字段名 ASC)。你們發如今子查詢中是不能使用ORDER BY排序的,這樣會產生語法錯誤。可是爲何會這樣呢?下面咱們通過一個SQL語句來分析一下。指針
SELECT S.SID,S.Name排序
FROM dbo.Student AS S博客
WHERE S.SID IN(io
SELECT C.SID語法
FROM dbo.Class技術
ORDER BY C.SID查詢
)db
這個時候SQLSERVER會報語法錯誤。這是爲何呢?co
在上一篇博客中提到過,ORDER BY子句執行是放在SQL語句的最後的。也就是說,子句SELECT C.SID FROM dbo.Class ORDER BY C.SID中 ORDER BY C.SID是最後執行的。這個子句首先執行FROM dbo.Class,而後執行SELECT C.SID 。在表中篩選出 SID全部的字段值。最後執行的ORDER BY C.SID 對SID進行升序排列。這個時候,你們必定要注意:
當ORDER BY 出如今子句中的時候,它所返回的不是一個DATATABLE或者說不是返回的一個臨時表,而是返回的一個遊標(指針)。
因此這個時候子查詢中的會報錯誤。