1. ACCESS資料庫分類查詢後結果為什麼是排序的
一種情況是該分類查詢使用了 order by 排序子句強制實施了排序;
另一種情況是該分類查詢並沒用強制排序,但是實際輸出結果看起來還是排序了。導致這種現象出現的原因是比較復雜的,它是由源表的數據結構(如欄位類型、索引等)、SQL語句的寫法和資料庫引擎執行SQL語句的內部演算法綜合作用導致的。
下面舉個簡單的情況說明一下,例如:
select 商品分類,count(*) as 分類數量 from 商品表 group by 商品分類;
這條語句即使不強制排序,實際輸出結果也會按商品分類排序輸出,因為資料庫引擎在後台計算每個分類的數量實際是首先要將各條商品記錄按商品分類排序後再來按順序數人頭的(每個分類的數量),這樣計算結果出來後附帶的排序效果也自然有了,如果資料庫引擎再將它打亂輸出反而需要在此基礎上額外增加系統開銷。
需要指出的是SQL選擇查詢執行後自然形成的排序效果在很多情況下是很難預料的(除非您是基礎資料庫開發工程師),因此我們應該根據實際需求決定是否人為對輸出結果強制排序。
2. 資料庫查詢時怎麼按照多個欄位進行排序
sql
使用order
by
排序
select
*
from
table
order
by
value1,value2
根據欄位value1和value2排序默認是升序
select
*
from
table
order
by
value1,value2
desc
按照降序排序
3. 資料庫樹形結構數據的查詢結果排序問題
不知道你的資料庫是什麼,如果是oracle的話,你用start with connect by試試。我不太確定能不能直接出來你要的效果。如果出不來,那麼用start with connect by+union all+條件判斷(分別寫每一個level=1的情況)應該可以,不過如果level=1有很多個,那麼就麻煩了。
還有一種辦法是利用字元串排序。比如1-1-1-2,1-2-1-2,1-1-1-3,那麼排完序之後應該是1-1-1-2,1-1-1-3,1-2-1-2.至於這個參數的出來方法就要去湊了。因為我擔心還有例如1-1-1-2-1這樣的,如果存在這樣的,那麼按照你的要求排序應該是
1-1-1-2,1-1-1-2-1,1-1-1-3,1-2-1-2,可是如果按照數字排序那麼1-1-1-2-1肯定在最後,所以用字元排序可能才能達到你的要求。(還是用start with connect by)
比如這里最後的編碼為
Level層數 父件代號 子件代號 子件順序 編碼
1 root C 1 1-1
1 root D 2 2-1
1 root F 3 3-1
2 C A 1 1-1-2-1
2 C B 2 1-1-2-2
2 D E 1 2-1-2-1
我這里沒有環境,沒辦法測試,所有的內容均為猜想,僅供參考。
4. 資料庫排序語句
資料庫的排序用order by語句實現。
工具:sqlserver 2008R2
步驟:
1、有如下學生表: