查询所用的表结构见https://blog.csdn.net/zjhbeautiful/article/details/108065336

SQL经典50题第9题正解
题目:查询和“ 01 “号的同学学习的课程完全相同的其他同学的信息
正确解答需用到group_concat()函数,代码如下:

select*
fromstudent
wheresid in (selectsidfromscgroup bysidhavinggroup_concat(cid ORDER BY cid) = (select group_concat(cid ORDER BY cid)fromscwheresid = '01')and sid != '01');

注: 解答此题时需要实现组内排序再拼接(group_concat方法自身可实现组内排序),不排序会导致结果出错。

比如:s_id=01同学的c_id依次是01、02、03,但是s_id=02的某位同学的c_id是01、03、02,s_id=02同学是符合条件的,但是不排序会导致检索不到,因为s_id=01同学的字符串是‘01,02,03’,而s_id=02同学的字符串是‘01,03,02’。

MySQL中 group_concat() 用法解析:

作用:将组中的字符串连接成为具有各种选项的单个字符串。

完整语法

group_concat([DISTINCT] 要连接的字段 [Order BY ASC/DESC 排序字段] [Separator '分隔符'])

示例

SELECT * FROM sc;


表结构与数据如上,现在的需求就是每个sid为一行,然后一行内显示该sid所有分数

接下来用group_concat !!!

select sid,group_concat(score)
from sc
GROUP BY sid;

可以看到结果根据id 分行,并且分数默认用逗号分割,每个id有重复数据
接下来去重

select sid,group_concat(DISTINCT score)
from sc
GROUP BY sid;


对内容进行排序

select sid,group_concat(DISTINCT score ORDER BY score DESC)
from sc
GROUP BY sid;


设置分隔符,把逗号换成分号

select sid,group_concat(DISTINCT score ORDER BY score DESC SEPARATOR ';')
from sc
GROUP BY sid;

【SQL经典50题】9.查询和“ 01 “号的同学学习的课程完全相同的其他同学的信息【正解】相关推荐

  1. 常见的SQL笔试题和面试题:SQL经典50题

    常见的SQL笔试题和面试题(上):经典50题 已知有如下4张表: 学生表:STUDENT(S#,SNAME,SAGE,SSEX) 课程表:COURSE(C#,CNAME,T#) 成绩表:SC(S#,C ...

  2. sql 练习查询和“01“号的同学学习的课程完全相同的其他同学的信息

    sql练习题 练习查询和"01"号的同学学习的课程完全相同的其他同学的信息 SELECT s_id,s_name,s_birth,s_sex FROM student WHERE ...

  3. 查询和 01 号的同学学习的课程完全相同的其他同学的信息

    今天再练习Mysql练习题的时候遇到了 "查询和01号的同学学习的课程完全相同的其他同学的信息" 的问题,开始一脸懵逼,那个带题目的大佬的答案貌似有点问题,所以网上看了一些大佬的代 ...

  4. 关于查询和1号的同学学习的课程完全相同的其他同学的信息详细

    以下是建表语句: create table bdqn_student( sno number(2), sname varchar2(20) not null, sbirthdate date, sge ...

  5. SQL经典50题(MySQL版)

    近段时间一直都在学习MySQL,为了检验自己的学习效果,特意拿了网上经典的SQL50题练了一下. 我用的是MySQL Server 8.0版本(新增了窗口函数rank()等,接下来我会把自己的SQL语 ...

  6. sql经典50题之--15. 按各科成绩进行排序,并显示排名, Score 重复时保留名次空缺

    表 student sc teacher course 准备工作 1.1group by后面存在多个字段 1.2 left join sc as b 给sc起名为b 1.3 left join- on ...

  7. 查询和“s001”号的同学学习的课程完全相同的其他同学学号和姓名

    逻辑: 如果一个人所选课程有s001选择的课程, 且没有选择与s001不同的课程, 且和s001选择的课程数量相同, 这个人还不是s001,那这个人选择的课程和s001一样. 表sc(sno 学号,c ...

  8. SQL笔试经典50题及答案解析

    [转]SQL笔试经典50题及答案解析 建表语句 create table Student(sid varchar(10),sname varchar(10),sage datetime,ssex nv ...

  9. mysql sql语句面试经典50题_SQL:经典面试50题

    查询" 01 "课程比" 02 "课程成绩高的学生的信息及课程分数 1.1 查询同时存在" 01 "课程和" 02 "课 ...

最新文章

  1. c++语言函数大全,C++函数
  2. 【硬件】运放的那些事儿
  3. 测试Servlet生命周期学习笔记
  4. python while循环语句-python while循环控制流语句结构与用法
  5. 论文笔记 Bayesian Probabilistic Matrix Factorizationusing Markov Chain Monte Carlo (ICML 2008)
  6. 一块电路板从“出生”到“成年”
  7. PHP开发人员常犯的10个MysqL错误
  8. 130_传析阅管理系统accdb64位版本
  9. linux磁珠技术,MACS磁珠分选技术基本原理(图文释义)
  10. SQL 使用总结二 ( 不同库的日期总结)
  11. python学习路程1
  12. 一文详解YOLOX算法实现血细胞检测
  13. linux eclipse中文设置字体,完美调整Ubuntu下的Eclipse字体及界面显示
  14. python二级题库(百分之九十原题) 刷题软件推荐 第二套
  15. python设计教务管理系统_python实现教务管理系统
  16. WIFI中的关键词,频率,频段,频宽,频带...你晕了没??.
  17. 低阶的Newton-Cotes求积公式 | 梯形求积公式、Simpson求积公式、Cotes求积公式
  18. 布鲁特-福斯算法(字符串匹配)
  19. uefi如何安装linux系统教程,UEFI启动模式下安装Ubuntu教程
  20. 检测图像中的椭圆 并求其长短轴...

热门文章

  1. 计算机 打开3389端口,3389端口修改和打开【图文教程】
  2. cesium加载并聚焦glb模型
  3. 使用fiddler代替charles将react中的axios请求重定向到本地文件,兼容谷歌浏览器chrome
  4. 手机拍照上传图片旋转角度问题
  5. 机房服务器显示器切换,两台电脑主机,一台显示屏,怎么实现切换!需要什么转换器,大概多少...
  6. SCP、NFS、TFTP的配置
  7. 初识GeneXus产品
  8. UCK制作Ubuntu livecd
  9. ACM 海贼王之伟大航路(深搜剪枝)
  10. 利用logic friday 把分组密码Present的S盒转化成布尔函数(转载)