📄 10-2-5.cfm.htm
字号:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>排序查询结果</title>
<meta name="GENERATOR" content="Microsoft FrontPage 3.0">
</head>
<body>
<font FACE="宋体"><b>
<p ALIGN="JUSTIFY">排序查询结果</p>
</b></font><font FACE="宋体" SIZE="3">
<p ALIGN="JUSTIFY">本章的介绍中曾强调过,SQL表没有内在的顺序。例如,从一个表中取第二个记录是没有意义的。从SQL的角度看来,没有一个记录在任何其他记录之前。</p>
<p ALIGN="JUSTIFY">然而,你可以操纵一个SQL查询结果的顺序。在缺省情况下,当记录从表中取出时,记录不以特定的顺序出现。例如,当从表authors中取出字段au_lname时,查询结果显示成这样:</p>
<p ALIGN="JUSTIFY">au_lname</p>
<p ALIGN="JUSTIFY"></font><font SIZE="3">……………………………………</font><font
FACE="宋体" SIZE="3">.</p>
<p ALIGN="JUSTIFY">White</p>
<p ALIGN="JUSTIFY">Green</p>
<p ALIGN="JUSTIFY">Carson</p>
<p ALIGN="JUSTIFY">O</font><font SIZE="3">’</font><font FACE="宋体" SIZE="3">Leary</p>
<p ALIGN="JUSTIFY">Straight</p>
<p ALIGN="JUSTIFY"></font><font SIZE="3">…</p>
</font><font FACE="宋体" SIZE="3">
<p ALIGN="JUSTIFY">(23 row(s) affected)</p>
<p ALIGN="JUSTIFY">看一列没有特定顺序的名字是很不方便的。如果把这些名字按字母顺序排列,读起来就会容易得多。通过使用ORDER
BY子句,你可以强制一个查询结果按升序排列,就像这样:</p>
<p ALIGN="JUSTIFY">SELECT au_lname FROM authors ORDER BY au_lname</p>
<p ALIGN="JUSTIFY">当这个SELECT语句执行时,作者名字的显示将按字母顺序排列。ORDER
BY子句将作者名字按升序排列。</p>
<p ALIGN="JUSTIFY">你也可以同时对多个列使用ORDER BY子句。例如,如果你想同时按升序显示字段au_lname和字段au_fname,你需要对两个字段都进行排序:</p>
<p ALIGN="JUSTIFY">SELECT au_lname,au_fname FROM authors ORDER BY au_lname ,au_fname</p>
<p ALIGN="JUSTIFY">这个查询首先把结果按au_lname字段进行排序,然后按字段au_fname排序。记录将按如下的顺序取出:</p>
<p ALIGN="JUSTIFY">au_lname au_fname</p>
<p ALIGN="JUSTIFY"></font><font SIZE="3">……………………………………………………………………</font><font
FACE="宋体" SIZE="3">.</p>
<p ALIGN="JUSTIFY">Bennet Abraham</p>
<p ALIGN="JUSTIFY">Ringer Albert</p>
<p ALIGN="JUSTIFY">Ringer Anne</p>
<p ALIGN="JUSTIFY">Smith Meander</p>
<p ALIGN="JUSTIFY"></font><font SIZE="3">…</p>
</font><font FACE="宋体" SIZE="3">
<p ALIGN="JUSTIFY">(23 row(s) affected)</p>
<p ALIGN="JUSTIFY">注意有两个作者有相同的名字Ringer。名为Albert Ringer的作者出现名为Anne
Ringer的作者之前,这是因为姓Albert按字母顺序应排在姓Anne之前。</p>
<p ALIGN="JUSTIFY">如果你想把查询结果按相反的顺序排列,你可以使用关键字DESC。关键字DESC把查询结果按降序排列,如下例所示:</p>
<p ALIGN="JUSTIFY">SELECT au_lname,au_fname FROM authors </p>
<p ALIGN="JUSTIFY">WHERE au_lname=</font><font SIZE="3">”</font><font FACE="宋体"
SIZE="3">Ringer</font><font SIZE="3">”</font><font FACE="宋体" SIZE="3"> ORDER BY
au_lname ,au_fname DESC</p>
<p ALIGN="JUSTIFY">这个查询从表authors中取出所有名字为Ringer的作者记录。ORDER
BY子句根据作者的名字和姓,将查询结果按降序排列。结果是这样的:</p>
<p ALIGN="JUSTIFY">au_lname au_fname</p>
<p ALIGN="JUSTIFY"></font><font SIZE="3">………………………………………………………………………………………</font><font
FACE="宋体" SIZE="3">.</p>
<p ALIGN="JUSTIFY">Ringer Anne</p>
<p ALIGN="JUSTIFY">Ringer Albert</p>
<p ALIGN="JUSTIFY">(2 row(s) affectec)</p>
<p ALIGN="JUSTIFY">注意在这个表中,姓Anne出现在姓Albert之前。作者名字按降序显示。</p>
<p ALIGN="JUSTIFY">你也可以按数值型字段对一个查询结果进行排序。例如,如果你想按降序取出所有书的价格,你可以使用如下的SQL查询:</p>
<p ALIGN="JUSTIFY">SELECT price FROM titles ORDER BY price DESC</p>
<p ALIGN="JUSTIFY">这个SELECT语句从表中取出所有书的价格,显示结果时,价格低的书先显示,价格高的书后显示。</p>
<p ALIGN="JUSTIFY">警告</p>
<b>
<p ALIGN="JUSTIFY"></b>不是特别需要时,不要对查询结果进行排序,因为服务器完成这项工作要费些力气。这意味着带有ORDER
BY 子句的SELECT语句执行起来比一般的SELECT语句花的时间长。</p>
</font>
</body>
</html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -