[SQL][概念][排序]排序概念

SQL中查詢表格中符合搜尋條件的資料列,並排序的語法:

SELECT {*,欄位[別名],..}

  • FROM表格
  • WHERE條件
  • ORDER BY 欄位|別名|位置 [ASC(預設遞增)|DESC(遞減)]

 

我們經常需要能夠將抓出的資料做一個有系統的顯示。

可能是由小往大 (ascending) 或是由大往小 (descending)。在這種情況下,我們就可以運用 ORDER BY 這個指令來達到我們的目的。

我們可以照好幾個不同的欄位來排順序。在這個情況下, ORDER BY 子句的語法如下(假設有兩個欄位):

ORDER BY "欄位一" [ASC, DESC], "欄位二" [ASC, DESC]

這兩個欄位是互相獨立的。

若我們對這兩個欄位都選擇由小往大的話,那這個子句就會造成結果是依據 "欄位一" 由小往大排。 若有好幾筆資料 "欄位一" 的值相等,那這幾筆資料就依據 "欄位二" 由小往大排。

另外就是有關資料的排行榜查詢:

舉例來說首先我先從資料庫叫出employee表格的資料

SELECT last_name,job_id,department_id,HIRE_DATE,salary
FROM employees
ORDER BY salary desc;

印出

我想查詢關於salary來位的前幾名或後幾名

我就會輸入以下指令

SELECT TOP(2) salary, employee_id,last_name
FROM employees
ORDER BY salary desc

輸出結果如下,在指令中我印出前兩名薪水高的員工

那如果有兩名員工有相同的薪水會發生什麼事呢?

我們就可以使用WITH TIES指令將同名次的也列入

SELECT TOP(2) WITH TIES salary, employee_id,last_name
FROM employees
ORDER BY salary desc

就會把同名次的也列出來。