对多个列进行排序

还可以使用 ORDER BY 排序两个或多个列,这会创建嵌套排序。缺省值仍然是升序。在 ORDER BY 子句中最先列出的列优先。

下列查询和图 2及相应的查询结果显示了嵌套排序。要修改显示所选数据的顺序。更改在 ORDER BY 子句中命名的两个列的顺序。
SELECT stock_num, manu_code, description, unit_price
          FROM stock 
          ORDER BY manu_code, unit_price;
查询结果中,manu_code 列数据按字母顺序显示,并且在同一 manu_code(例如:ANZ 、HRO)中,unit_price 以升序列出。

图: 查询结果

stock_num manu_code description     unit_price
          
          5 ANZ       tennis racquet      $19.80 
          9 ANZ       volleyball net      $20.00
          6 ANZ       tennis ball         $48.00
          313 ANZ       swim cap            $60.00
          201 ANZ       golf shoes          $75.00
          310 ANZ       kick board          $84.00
          ⋮
          111 SHM       10-spd, assmbld    $499.99
          112 SHM       12-spd, assmbld    $549.00
          113 SHM       18-spd, assmbld    $685.90
          5 SMT       tennis racquet      $25.00
          6 SMT       tennis ball         $36.00
          1 SMT       baseball gloves    $450.00
下列查询显示了 ORDER BY 子句中列的相反顺序。

图: 查询

SELECT stock_num, manu_code, description, unit_price
          FROM stock 
          ORDER BY unit_price, manu_code;
在此查询结果中,数据按 unit_price 的升序显示,其中两个或多个行具有相同的 unit_price(例如:$20.00 、$48.00 、$312.00),manu_code 以字母顺序显示。

图: 查询结果

stock_num manu_code description     unit_price
            
            302 HRO       ice pack             $4.50 
            302 KAR       ice pack             $5.00
            5 ANZ       tennis racquet      $19.80
            9 ANZ       volleyball net      $20.00
            103 PRC       frnt derailleur     $20.00
            ⋮
            108 SHM       crankset            $45.00
            6 ANZ       tennis ball         $48.00
            305 HRO       first-aid kit       $48.00
            303 PRC       socks               $48.00
            311 SHM       water gloves        $48.00
            ⋮
            113 SHM       18-spd, assmbld    $685.90
            1 HSK       baseball gloves    $800.00
            8 ANZ       volleyball         $840.00 
            4 HSK       football           $960.00
ORDER BY 子句中的列的顺序十分重要,DESC 关键字的位置也很重要。尽管下列查询中的各语句在 ORDER BY 子句中包含相同的语句,但是每个语句产生的结果并不相同(没有显示)。

图: 查询

SELECT * FROM stock ORDER BY manu_code, unit_price DESC;
          
          SELECT * FROM stock ORDER BY unit_price, manu_code DESC;
          
          SELECT * FROM stock ORDER BY manu_code DESC, unit_price; 
          
          SELECT * FROM stock ORDER BY unit_price DESC, manu_code;