【牛客刷题-SQL】SQL3 查询结果去重

1. SQL3 查询结果去重

‍♂️ 个人主页: Redamancy_06
系列专栏:《在线编程-SQL篇》
推荐一款找工作神器网站:《牛客网练习入口》|笔试题库|面试经验|实习招聘内推|
无论是面试,还是刷题学习,都非常好用。而且调试在线编程题时,是可以对比测试数据对应的正确输出的。
希望大家多多支持一起进步呀!
如果文章对你有帮助的话,欢迎评论 点赞 收藏 加关注

在这里插入图片描述

1.1描述

题目:现在运营需要查看用户来自于哪些学校,请从用户信息表中取出学校的去重数据。

1.2示例:user_profile

id device_id gender age university province
1 2138 male 21 北京大学 Beijing
2 3214 male 复旦大学 Shanghai
3 6543 female 20 北京大学 Beijing
4 2315 female 23 浙江大学 ZheJiang
5 5432 male 25 山东大学 Shandong

根据示例,你的查询应返回以下结果:

university
北京大学
复旦大学
浙江大学
山东大学

1.3示例1

输入:

drop table if exists user_profile;
CREATE TABLE `user_profile` (
`id` int NOT NULL,
`device_id` int NOT NULL,
`gender` varchar(14) NOT NULL,
`age` int ,
`university` varchar(32) NOT NULL,
`province` varchar(32)  NOT NULL);
INSERT INTO user_profile VALUES(1,2138,'male',21,'北京大学','BeiJing');
INSERT INTO user_profile VALUES(2,3214,'male',null,'复旦大学','Shanghai');
INSERT INTO user_profile VALUES(3,6543,'female',20,'北京大学','BeiJing');
INSERT INTO user_profile VALUES(4,2315,'female',23,'浙江大学','ZheJiang');
INSERT INTO user_profile VALUES(5,5432,'male',25,'山东大学','Shandong');

输出:

北京大学
复旦大学
浙江大学
山东大学

1.3该题考察DISTINCT语句

1.3.1 DISTINCT 的作用

在MySQLl中,DISTINCT关键字的主要作用就是对数据库表中一个或者多个字段重复的数据进行过滤,只返回其中的一条数据给用户,DISTINCT只可以在SELECT中使用

1.3.2 DISTINCT 的用法

SELECT DISTINCT expression[,expression...]
FROM tables 
[where conditions];

在使用distinct的过程中主要注意一下几点:

  1. 在对字段进行去重的时候,要保证DISTINCT在所有字段的最前面
  2. 如果DISTINCT关键字后面有多个字段时,则会对多个字段进行组合去重,只有多个字段组合起来的值是相等的才会被去重

1.3.3 DISTINCT 的原理

DISTINCT 进行去重的主要原理是通过先对要进行去重的数据进行分组操作,然后从分组后的每组数据中去一条返回给客户端,在这个分组的过程可能会出现两种不同的情况:

  1. DISTINCT 依赖的字段未全部包含索引:
    该情况由于索引不能满足整个去重分组的过程,所以需要用到临时表,MySQL 首先需要将满足条件的数据放到临时表中,然后在临时表中对该部分数据进行分组,然后从临时表中每个分组的数据中去一条数据,在临时表中进行分组的过程中不会对数据进行排序。

  2. DISTINCT 依赖的字段全部包含索引:
    该情况 MySQL 直接通过操作索引对满足条件的数据进行分组,然后从分组后的每组数据中去一条数据。

【牛客刷题-SQL】SQL3 查询结果去重_第1张图片

1.4题解

SELECT DISTINCT university
FROM user_profile

SQL是一种简单的语言,但实践才是最好的学习方式;因为简单,所以上手快;因此是语言,索引需要实践。“纸上谈来终觉浅”,学习一门编程语言,最重要的还是要亲手编程,这个题单正是使用这种手把手指导的方式,教会你亲手编写SQL代码,让你实现从萌新到大佬的跨越。
点击链接赶紧练习起来吧:https://www.nowcoder.com/link/pc_csdncpt_red_sql

你可能感兴趣的:(#,牛客刷题---SQL,sql,数据库,面试)