VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > 数据库 > sql数据库 >
  • sql语句大全之排序查询结果

排序查询结果
    本章的介绍中曾强调过,SQL表没有内在的顺序。例如,从一个表中取第二个记录是没有意义的。从SQL的角度看来,没有一个记录在任何其他记录之前。
然而,你可以操纵一个SQL查询结果的顺序。在缺省情况下,当记录从表中取出时,记录不以特定的顺序出现。例如,当从表authors中取出字段au_lname时,查询结果显示成这样:
 
       au_lname
       …………………………………….
       White
       Green
       Carson
       O’Leary
       Straight
       …
       (23 row(s) affected)
  
    看一列没有特定顺序的名字是很不方便的。如果把这些名字按字母顺序排列,读起来就会容易得多。通过使用ORDER BY子句,你可以强制一个查询结果按升序排列,就像这样:
 
    SELECT au_lname FROM  authors  ORDER  BY  au_lname
 
    当这个SELECT语句执行时,作者名字的显示将按字母顺序排列。ORDER BY子句将作者名字按升序排列。
    你也可以同时对多个列使用ORDER BY子句。例如,如果你想同时按升序显示字段au_lname和字段au_fname,你需要对两个字段都进行排序:
 
    SELECT au_lname,au_fname FROM authors ORDER BY au_lname ,au_fname
 
    这个查询首先把结果按au_lname字段进行排序,然后按字段au_fname排序。记录将按如下的顺序取出:
 
      au_lname                         au_fname
      …………………………………………………………………….
      Bennet                           Abraham
      Ringer                            Albert
      Ringer                            Anne
      Smith                             Meander
      …
      (23 row(s) affected)
 
    注意有两个作者有相同的名字Ringer。名为Albert Ringer的作者出现名为Anne Ringer的作者之前,这是因为姓Albert按字母顺序应排在姓Anne之前。
如果你想把查询结果按相反的顺序排列,你可以使用关键字DESC。关键字DESC把查询结果按降序排列,如下例所示:
    
       SELECT  au_lname,au_fname  FROM authors
              WHERE au_lname=”Ringer” ORDER BY  au_lname ,au_fname  DESC
 
    这个查询从表authors中取出所有名字为Ringer的作者记录。ORDER BY子句根据作者的名字和姓,将查询结果按降序排列。结果是这样的:
 
      au_lname                          au_fname
      ……………………………………………………………………………………….
      Ringer                             Anne
      Ringer                             Albert
      (2 row(s)  affectec)
 
    注意在这个表中,姓Anne出现在姓Albert之前。作者名字按降序显示。
你也可以按数值型字段对一个查询结果进行排序。例如,如果你想按降序取出所有书的价格,你可以使用如下的SQL查询:
 
       SELECT  price  FROM titles  ORDER BY  price  DESC
 
    这个SELECT语句从表中取出所有书的价格,显示结果时,价格低的书先显示,价格高的书后显示。
 
    警告:
    不是特别需要时,不要对查询结果进行排序,因为服务器完成这项工作要费些力气。这意味着带有ORDER BY 子句的SELECT语句执行起来比一般的SELECT语句花的时间长。

相关教程