排序操作
假设当前数据库记录如下:
CREATE TABLE IF NOT EXISTS mytest(
id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY COMMENT '用户编号',
username VARCHAR(20) NOT NULL UNIQUE COMMENT '用户名',
sex ENUM('男','女','保密') NOT NULL DEFAULT '保密' COMMENT '性别',
age TINYINT UNSIGNED NOT NULL COMMENT '年龄'
)ENGINE=INNODB CHARSET=UTF8;
INSERT mytest VALUE(NULL,'king',1,18);
INSERT mytest VALUES(NULL,'Jhon','男',19),(NULL,'Mike',1,20),(NULL,'Jack',1,26);
INSERT mytest VALUE(NULL,'hing','女',18);
INSERT mytest(username,age) VALUE('Mary',17);
INSERT mytest SET username='Black',sex='男',age=19;
INSERT mytest VALUE(DEFAULT,'hung','女',18);
SELECT * FROM mytest;
输出为:
id username sex age
1 king 男 18
2 Jhon 男 19
3 Mike 男 20
4 Jack 男 26
5 hing 女 18
6 Mary 保密 17
7 Black 男 19
8 hung 女 18
如果要按照id降序排序:
SELECT id,username,sex,age FROM mytest ORDER BY id DESC;//DESC表示降序,如果不加DESC则默认表示升序排序,也可以用ASC表示升序
输出:
id username sex age
8 hung 女 18
7 Black 男 19
6 Mary 保密 17
5 hing 女 18
4 Jack 男 26
3 Mike 男 20
2 Jhon 男 19
1 king 男 18
按照age升序排序
SELECT id,username,sex,age FROM mytest ORDER BY age;
输出:
id username sex age
6 Mary 保密 17
1 king 男 18
5 hing 女 18
8 hung 女 18
2 Jhon 男 19
7 Black 男 19
3 Mike 男 20
4 Jack 男 26
也可以对多个字段进行排序:
SELECT id,username,sex,age FROM mytest ORDER BY age ASC, username ASC;//在按照age排序完的基础上,再按照username进行排序
输出:
id username sex age
6 Mary 保密 17
5 hing 女 18
8 hung 女 18
1 king 男 18
7 Black 男 19
2 Jhon 男 19
3 Mike 男 20
4 Jack 男 26
对所有记录进行随机排序
输入:
SELECT id,username,sex,age FROM mytest ORDER BY RAND();
得到的输出每次都是随机的
限制结果集的显示条数
输入:
SELECT id,username,sex,age FROM mytest ORDER BY age LIMIT 3;//显示前三条记录
输出:
id username sex age
6 Mary 保密 17
1 king 男 18
8 hung 女 18
或者输入
SELECT id,username,sex,age FROM mytest ORDER BY age LIMIT 2,3;//从记录下标2(第三条记录)开始,输出三条记录
输出:
id username sex age
8 hung 女 18
5 hing 女 18
2 Jhon 男 19