嗨客网搜索
数据库教程

Mysql查询不同值

Mysql查询不同值

在执行 select 的时候,它会将所有匹配到的行获取出来,但是如果有很多数据都一样,你不想看到重复的数据,该怎么办呢?这个时候就可以使用 mysql 里面的 distinct 关键字。

在进行本节的讲解的时候,我们新建一张学生表,并在里面插入几条记录。

CREATE TABLE `student` ( `id` int(11) NOT NULL AUTO_INCREMENT, `stu_no` int(11) DEFAULT NULL, `stu_name` varchar(255) DEFAULT NULL, `age` int(11) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

在里面插入几条记录

INSERT INTO student (`id`,`stu_no`,`stu_name`,`age`) VALUES (1,1001,'小明',17), (2,1002,'小红',16), (3,1003,'小军',18), (4,1004,'小亮',19), (5,1005,'小亮',19), (6,1006,'小杰',16), (7,1007,'小亮',20);

数据库查询到的结果如下

04 distinct all data.png

查询不同值

语法

select distinct 列名1,列名2.... from 表名。

描述

关键字 描述
select 查询 mysql 表的关键字
distinct 查询不同语句的关键字,它对在它后面列出的所有列生效,表示后面所有的列的元素不一样
列名 需要查询出来的列
from 查询一张表的关键字,放在表的前面
表名 被查询的表名

说明

查询不同的值,其实和 select 语法差不多,只不过它在需要不同数据的列的前面加了 distinct 关键字。distinct 关键字需要放在列的最前面。

案例

select distinct stu_name,age from student;

运行结果如下

05 distinct.png

我们可以看到查询的结果将 stu_nameage 两个字段组合不同的数据获取出来。distinct 对后面的所有列都有效。

我们再看下查询 stu_name 单列的效果

select distinct stu_name from student;

运行结果如下

06 distinct2.png

从上面两个运行结果比对,我们可以看到 distinct 是对它后面的所有列生效,而不是只对它后面的第一个列生效。它将后面所有的列都去重。

总结

distinct 关键字是对跟在它后面的所有列进行去重,select 是将数据按照行的形式展列出来,所以 distinct 查询的数据每一行都是不一样的。

嗨客网顶部