Share via


排序資料列

您可以排序查詢結果中的資料列。 也就是說,您可以命名特定資料行或資料行集,其值將決定結果集中資料列的排列次序。

注意事項注意事項

排序次序一部分取決於資料行的定序序列。您可以在定序對話方塊中變更定序序列。

您可以使用以下幾種方法來排序查詢結果:

  • 您可以使用遞增或遞減次序來排序資料列:根據預設值,SQL 會使用排序依據資料行以遞增方式排序資料列。 例如,若要以價格遞增方式來排列書名,只要在價格資料行中排序資料列即可。 產生的 SQL 將如下所示:

    SELECT *
    FROM titles
    ORDER BY price
    

    另一方面,如果要先排序較貴書籍的名稱,您可以明確指定從最貴的書籍開始排序。 也就是說,您可以表示在價格資料行使用遞減的方式來排序結果資料列。 產生的 SQL 將如下所示:

    SELECT *
    FROM titles
    ORDER BY price DESC
    
  • 您可以依據多個資料行來排序:例如,您可以建立結果集,其中一個資料列列出所有作者,並先使用州來排序,然後再使用城市來排序。 產生的 SQL 將如下所示:

    SELECT *
    FROM authors 
    ORDER BY state, city
    
  • 您可以依據不在結果集出現的資料行來排序:例如,您可以建立結果集並依書本價格從高至低排列,即使該結果集中並未顯示價格。 產生的 SQL 將如下所示:

    SELECT title_id, title
    FROM titles
    ORDER BY price DESC
    
  • 您可以依據衍生資料行來排序:例如,您可以建立結果集,其中每個資料列都含有書名,而且依版稅由高至低排列。 產生的 SQL 將如下所示:

    SELECT title, price * royalty / 100 as royalty_per_unit
    FROM titles
    ORDER BY royalty_per_unit DESC
    

    (強調顯示的文字部分為每本書所賺取版稅的計算公式)。

    若要計算衍生的資料行,您可以如同前述的範例使用 SQL 語法,或者使用會傳回純量值的使用者定義函式。 如需使用者定義函式的詳細資訊,請參閱 SQL Server 文件。

  • 您可以排序群組資料列:例如,您可以建立結果集,其中每個資料列說明某個城市,以及該城市中的作者數目,並優先顯示包含較多作者的城市。 產生的 SQL 將如下所示:

    SELECT city, state, COUNT(*)
    FROM authors
    GROUP BY city, state
    ORDER BY COUNT(*) DESC, state 
    

    注意,查詢會使用 state 做為次要排序資料行。 因此,如果有兩個州擁有相同數量的作者,這兩個州將按字母次序出現。

  • 您可以使用國際資料來排序:也就是說,您可以使用定序慣例來排序資料行,這種定序慣例與該資料行的預設慣例不同。 例如,您可以撰寫擷取所有 Jaime Patiño 所著書籍名稱的查詢。 若要以字母次序顯示名稱,您可以使用西班牙文定序序列來排列名稱資料行。 產生的 SQL 將如下所示:

    SELECT title
    FROM 
        authors 
        INNER JOIN 
            titleauthor 
            ON authors.au_id 
            =  titleauthor.au_id 
            INNER JOIN
                titles 
                ON titleauthor.title_id 
                =  titles.title_id 
    WHERE 
         au_fname = 'Jaime' AND 
         au_lname = 'Patiño'
    ORDER BY 
         title COLLATE SQL_Spanish_Pref_CP1_CI_AS
    

如需詳細資訊,請參閱 如何:使用查詢和檢視表設計工具處理國際資料。 如需排序結果的詳細資訊,請參閱查詢結果的排序和群組

請參閱

其他資源

查詢結果的排序和群組

設計查詢和檢視表