order by 是对你要查询的字段进行排序! 默认是降升序排列! 用法: order by 字段名 desc --降序 order by 字段名 asc --升序 也可以同时对两个字段排序 order by 字段名 desc,字段名 desc 同时两个字段排列,前一个字段排列出现相等的情况再排第二个字段
不加order by,語句select top 3 ssd_id from salary_standard 是隨機取出數據庫中的3條數據,每次都不一樣,這個是SQL2005內幕裡面這樣描述的。有興趣的可以去做個測試。 也就是說,取出來的3條數據每次不一樣,自然最後MAX後的數據也不一樣。 order by 的目的很顯然,就是針對這個情況而做的排序,讓數據記錄準確的查詢出來。
補充一下,SQL中表的存放並不是我們想像中那樣會排列好或者按順序放置的,這就涉及到SQL的內幕知識。本人也只是略懂而已,可能有描述不對的地方還請參考Inside T SQL2005 QUERYING 這本書
order by 就是将查询出来的结果进行排序。默认是的是顺序排序。如果在排序字段后加上desc则是倒序排序了。一般的用top选取相应记录时,都会用到order by。
top N 如果不加order by 结果随机产生。
紅色標識的“隨機”有些錯誤。SQL訪問數據有他自己的訪問方式。以下將引用一下原文:如果指定了不唯一的ORDER BY 列表且未指定WITH TIES 選項,或是根本沒有指定ORDER BY 子句,帶有TOP 的查詢將是不確定的。也就是說,返回的行正好是SQL Server物理上最先訪問到的行,因此它可能會產生不同的結果,但都被認為是正確的。如果你想保證確定性,TOP查詢必須包含唯一的ORDER BY 列表或WITH TIES選項。此段將回答LZ的問題,也將解釋我敘述時的錯誤。
然后在取出前三条,你可以单独写条sql语句测试一下就知道了
默认是降升序排列!
用法:
order by 字段名 desc --降序
order by 字段名 asc --升序
也可以同时对两个字段排序
order by 字段名 desc,字段名 desc
同时两个字段排列,前一个字段排列出现相等的情况再排第二个字段
也就是說,取出來的3條數據每次不一樣,自然最後MAX後的數據也不一樣。
order by 的目的很顯然,就是針對這個情況而做的排序,讓數據記錄準確的查詢出來。
如果不加order by 结果随机产生。