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


    1. SQL3 查询结果去重

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

    在这里插入图片描述

    1.1描述

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

    1.2示例:user_profile

    iddevice_idgenderageuniversityprovince
    12138male21北京大学Beijing
    23214male复旦大学Shanghai
    36543female20北京大学Beijing
    42315female23浙江大学ZheJiang
    55432male25山东大学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
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    输出:

    北京大学
    复旦大学
    浙江大学
    山东大学
    
    • 1
    • 2
    • 3
    • 4

    1.3该题考察DISTINCT语句

    1.3.1 DISTINCT 的作用

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

    1.3.2 DISTINCT 的用法

    SELECT DISTINCT expression[,expression...]
    FROM tables 
    [where conditions];
    
    • 1
    • 2
    • 3

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

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

    1.3.3 DISTINCT 的原理

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

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

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

    在这里插入图片描述

    1.4题解

    SELECT DISTINCT university
    FROM user_profile
    
    • 1
    • 2

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

  • 相关阅读:
    WPF中创建柱状图(数据统计)
    4.Redis的Key的操作命令
    SpringMVC笔记——配置异常处理
    CTFshow 命令执行 web29 30 31
    Chrome Extensions v3 迁移清单
    WebShell特征值汇总与检测工具
    【CSS】画个三角形或圆形或环
    seata的快速入门
    java锁
    AI推介-大语言模型LLMs论文速览(arXiv方向):2024.01.10-2024.01.20
  • 原文地址:https://blog.csdn.net/Redamancy06/article/details/126395245