SQL | 排序检索的数据

3-排序检索的数据

使用order by语句排序检索到的数据。

3.1-排序数据

使用SQL语句返回一个数据表的列。

select prod_id 
from products;

+---------------------+

| prod_name |

+---------------------+

| 8 inch teddy bear |

| 12 inch teddy bear |

| 18 inch teddy bear |

| Fish bean bag toy |

| Bird bean bag toy |

| Rabbit bean bag toy |

| Raggedy Ann |

| King doll |

| Queen doll |

+---------------------+

9 rows in set (0.00 sec)

并没有固定的排序,如果不指定排序方式,默认检索出的数据是按照数据在表中的数据。

子句,SQL语句是由子句构成的,有些子句是必须的,有些子句是可选的。

一个子句通常由:一个关键字加上所提供的数据组成。

子句的例子有我们在前面看到的SELECT语句的FROM子句。

为了明确排序select检索出的数据,使用order by子句。order by子句取一个或多个列的名字。

select prod_name
from products
order by prod_name;

+---------------------+

| prod_name |

+---------------------+

| 12 inch teddy bear |

| 18 inch teddy bear |

| 8 inch teddy bear |

| Bird bean bag toy |

| Fish bean bag toy |

| King doll |

| Queen doll |

| Rabbit bean bag toy |

| Raggedy Ann |

+---------------------+

9 rows in set (0.00 sec)

使用order by子句时,保证它是最后一条子句,如果不是最后一条子句,可能会报错。

上述子句按照字母顺序从前往后排序。

有时候需要按照多列进行排序。

select prod_id,prod_name,prod_price
from products
order by prod_price, prod_name;

+---------+---------------------+------------+

| prod_id | prod_name | prod_price |

+---------+---------------------+------------+

| BNBG02 | Bird bean bag toy | 3.49 |

| BNBG01 | Fish bean bag toy | 3.49 |

| BNBG03 | Rabbit bean bag toy | 3.49 |

| RGAN01 | Raggedy Ann | 4.99 |

| BR01 | 8 inch teddy bear | 5.99 |

| BR02 | 12 inch teddy bear | 8.99 |

| RYL01 | King doll | 9.49 |

| RYL02 | Queen doll | 9.49 |

| BR03 | 18 inch teddy bear | 11.99 |

+---------+---------------------+------------+

9 rows in set (0.00 sec)

检索出的结果首先按照prod_price排序,如果prod_price相同,就按照prod_name进行排序。

如果price的值都是唯一的,则不会按照name进行排序。

除了使用列名进行排序,还可以使用相对列位置进行排序。

select prod_id,prod_price,prod_name
from products
order by 2,3;

2表示使用第二列进行排序,也就是id,price,name中的第二列进行排序,3表示使用第三列进行排序。

好处是不用重复输入列名,但是坏处是容易搞错要排列的列,修改select语句时,可能忘记更改排列。

3.2-指定排序方向

数据排序默认的排序是A到Z,可以使用order by子句进行降序排序,从Z到A排序。使用关键字desc。

select prod_id,prod_price,prod_name
from products
order by prod_price desc;

+---------+------------+---------------------+

| prod_id | prod_price | prod_name |

+---------+------------+---------------------+

| BR03 | 11.99 | 18 inch teddy bear |

| RYL01 | 9.49 | King doll | | RYL02 | 9.49 | Queen doll |

| BR02 | 8.99 | 12 inch teddy bear |

| BR01 | 5.99 | 8 inch teddy bear |

| RGAN01 | 4.99 | Raggedy Ann |

| BNBG01 | 3.49 | Fish bean bag toy |

| BNBG02 | 3.49 | Bird bean bag toy |

| BNBG03 | 3.49 | Rabbit bean bag toy |

+---------+------------+---------------------+

9 rows in set (0.00 sec)

按照price从高到低进行排序。

3.3-多列排序

select prod_id,prod_price,prod_name
from products
order by prod_price desc,prod_name;

上述语句先对prod_price进行降序排列(价格由高到低),如果遇到价格相同的两行,则按照名称升序排列(从A到Z)。

注意:如果想要在多个列上进行降序排列,必须对每一列指定desc关键字。默认为asc,升序排序。

desc是descending的缩写,这两个关键字都可以使用。与desc相对的是asc,是ascending的缩写。

默认情况下,在字典排序顺序中,A被视为与a相同,这是大多数数据库管理系统的默认做法。

许多DBMS允许数据库管理员在需要时改变这种行为。

SQL | 排序检索的数据_第1张图片

你可能感兴趣的:(#,SQL,sql,数据库)