对行进行排序 (Visual Database Tools)

适用于:SQL Server

可以对查询结果中的行进行排序。 也就是说,可以命名其值确定结果集中行顺序的特定列或列集。

注意

排序的顺序部分由列的排序序列决定。 可以在“排序规则”对话框中更改排序规则序列。

可通过多种方式对查询结果进行排序:

  • 您可以按升序或降序排列行 默认情况下,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  
    

另请参阅

排序和分组查询结果(Visual Database Tools)
设计查询和视图的入门指南(Visual Database Tools)