1.distinct
distinct用于返回某个字段去重后的记录
+------+--------+-------+
| id | name | point |
+------+--------+-------+
| 1 | 小明 | 100 |
| 1 | 小红 | 90 |
| 2 | 小刚 | 80 |
| 3 | 小军 | 80 |
+------+--------+-------+
使用distincy对id去重
mysql> select distinct id from test;
+------+
| id |
+------+
| 1 |
| 2 |
| 3 |
+------+
如果同时对id和point去重,distinct默认同时满足id和point重复才去重,所以如果对上表执行,则结果没有实际去重效果
(如果想要获取去重后的完整记录信息可以使用group by函数)
mysql> select distinct id,point from test;
+------+-------+
| id | point |
+------+-------+
| 1 | 100 |
| 1 | 90 |
| 2 | 80 |
| 3 | 80 |
+------+-------+
distinct更多用于统计某个字段不重复记录的数量 -- count(distinct name)
mysql> select count(distinct name) from test;
+----------------------+
| count(distinct name) |
+----------------------+
| 4 |
+----------------------+
使用count函数统计某个字段不重复的记录数,关于count用法后面有介绍
2.group by
group by用于对数据进行分类归总,将查询结果按照1个或多个字段进行分组
mysql> select * from test group by id;
+------+--------+-------+
| id | name | point |
+------+--------+-------+
| 1 | 小明 | 100 |
| 2 | 小刚 | 80 |
| 3 | 小军 | 80 |
+------+--------+-------+
利用group by可以便捷的将数据记录去重,在by之后添加限定条件,指定需要分组的字段(可以指定多个字段)
3.order by
order by用于对数据进行排序,搭配关键字 asc/desc 指定 升降序 ,如不指定则默认从小到大升序(asc)
mysql> select * from test order by id desc;
+------+--------+-------+
| id | name | point |
+------+--------+-------+
| 3 | 小军 | 80 |
| 2 | 小刚 | 80 |
| 2 | b | 100 |
| 2 | c | 100 |
| 1 | 小明 | 100 |
| 1 | 小红 | 90 |
| 1 | a | 100 |
+------+--------+---