您可能已经注意到,在前面的示例中,结果行没有按特定顺序显示。当行以某种有意义的方式排序时,通常更容易检查查询输出。要对结果进行排序,请使用ORDER
BY
子句。
以下是动物的生日,按日期排序:
Press CTRL+C to copymysql> SELECT name, birth FROM pet ORDER 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
关键字添加到您排序所依据的列的名称中:
Press CTRL+C to copymysql> SELECT name, birth FROM pet ORDER BY birth DESC; +----------+------------+ | 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 | +----------+------------+
您可以对多列进行排序,也可以按不同的方向对不同的列进行排序。例如,要按动物类型升序排序,然后按动物类型内的出生日期降序排序(最小的动物排在最前面),请使用以下查询:
Press CTRL+C to copymysql> SELECT name, species, birth FROM pet ORDER BY species, birth DESC; +----------+---------+------------+ | 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
列排序顺序。