数据排序(order by)
在前面的示例中,您可能已经注意到结果行以不特定的顺序显示。当以某种有意义的方式对行进行排序时,通常更容易检查查询输出。要对结果排序,请使用ORDER BY
子句。
这是动物生日,按日期排序:
mysql>SELECT name , birthFROM petORDER BY birth; +---------- +------------ + | name | birth | +---------- +------------ + | Buffy | 1989 -05 -13 | | Bowser | 1989 -08 -31 | | Fang | 1990 -08 -27 | | Fluffy | 1993 -02 -04 | | Claws | 1994 -03 -17 | | Slim | 1996 -04 -29 | | Whistler | 1997 -12 -09 | | Chirpy | 1998 -09 -11 | | Puffball | 1999 -03 -30 | +---------- +------------ +
与所有其他比较操作一样,在字符类型列上,排序通常以不区分大小写的方式执行。这意味着除了大小写相同以外,其他列均未定义顺序。您可以通过使用强制的列区分大小写的排序BINARY
,像这样:。ORDER BY BINARY col_name
默认的排序顺序是升序,先是最小值。要以倒序(降序)排序,请将DESC
关键字添加到要排序的列的名称上:
mysql>SELECT name , birthFROM petORDER BY birthDESC ; +---------- +------------ + | name | birth | +---------- +------------ + | Puffball | 1999 -03 -30 | | Chirpy | 1998 -09 -11 | | Whistler | 1997 -12 -09 | | Slim | 1996 -04 -29 | | Claws | 1994 -03 -17 | | Fluffy | 1993 -02 -04 | | Fang | 1990 -08 -27 | | Bowser | 1989 -08 -31 | | Buffy | 1989 -05 -13 | +---------- +------------ +
您可以对多个列进行排序,也可以按不同方向对不同的列进行排序。例如,要按升序对动物类型进行排序,然后按降序对动物类型内的出生日期进行排序(首先是最年轻的动物),请使用以下查询:
mysql>SELECT name , species, birthFROM petORDER BY species, birthDESC ; +---------- +--------- +------------ + | name | species | birth | +---------- +--------- +------------ + | Chirpy | bird | 1998 -09 -11 | | Whistler | bird | 1997 -12 -09 | | Claws | cat | 1994 -03 -17 | | Fluffy | cat | 1993 -02 -04 | | Fang | dog | 1990 -08 -27 | | Bowser | dog | 1989 -08 -31 | | Buffy | dog | 1989 -05 -13 | | Puffball | hamster | 1999 -03 -30 | | Slim | snake | 1996 -04 -29 | +---------- +--------- +------------ +
DESC
关键字仅适用于列名紧接其前(birth
);它不会影响species
列的排序顺序。