对行进行排序 (Visual Database Tools)

适用于:SQL Server

您可以对查询结果中的行进行排序。 也就是说,可以对特定的列或一组列进行命名,该列或这些列的值决定结果集中行的顺序。

注意

排序顺序在一定程度上由列的排序规则顺序来决定。 可以在 “排序规则”对话框中更改排序规则顺序。

下面是几种可以用来对查询结果进行排序的方法:

  • 可按升序或降序来排列行 默认情况下,SQL 使用排序依据列按升序排列行。 例如,若要依据价格按升序来排列书籍名称,只需按 price 列对行进行排序即可。 生成的 SQL 结果可能类似以下形式:

    SELECT *  
    FROM titles  
    ORDER BY price  
    

    另一方面,若要排列书籍名称,使较贵的书排在前面,可以显式指定最贵的排在第一位的顺序。 也就是说,指定应按 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 编写的所有书籍名称。 若要按字母顺序显示书籍名称,请对 title 列使用 Spanish 排序顺序。 生成的 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  
    

另请参阅

对查询结果进行排序和分组 (Visual Database Tools)
设计查询和视图操作指南主题 (Visual Database Tools)