【SQL经典50题】9.查询和“ 01 “号的同学学习的课程完全相同的其他同学的信息【正解】
查询所用的表结构见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 “号的同学学习的课程完全相同的其他同学的信息【正解】相关推荐
- 常见的SQL笔试题和面试题:SQL经典50题
常见的SQL笔试题和面试题(上):经典50题 已知有如下4张表: 学生表:STUDENT(S#,SNAME,SAGE,SSEX) 课程表:COURSE(C#,CNAME,T#) 成绩表:SC(S#,C ...
- sql 练习查询和“01“号的同学学习的课程完全相同的其他同学的信息
sql练习题 练习查询和"01"号的同学学习的课程完全相同的其他同学的信息 SELECT s_id,s_name,s_birth,s_sex FROM student WHERE ...
- 查询和 01 号的同学学习的课程完全相同的其他同学的信息
今天再练习Mysql练习题的时候遇到了 "查询和01号的同学学习的课程完全相同的其他同学的信息" 的问题,开始一脸懵逼,那个带题目的大佬的答案貌似有点问题,所以网上看了一些大佬的代 ...
- 关于查询和1号的同学学习的课程完全相同的其他同学的信息详细
以下是建表语句: create table bdqn_student( sno number(2), sname varchar2(20) not null, sbirthdate date, sge ...
- SQL经典50题(MySQL版)
近段时间一直都在学习MySQL,为了检验自己的学习效果,特意拿了网上经典的SQL50题练了一下. 我用的是MySQL Server 8.0版本(新增了窗口函数rank()等,接下来我会把自己的SQL语 ...
- 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 ...
- 查询和“s001”号的同学学习的课程完全相同的其他同学学号和姓名
逻辑: 如果一个人所选课程有s001选择的课程, 且没有选择与s001不同的课程, 且和s001选择的课程数量相同, 这个人还不是s001,那这个人选择的课程和s001一样. 表sc(sno 学号,c ...
- SQL笔试经典50题及答案解析
[转]SQL笔试经典50题及答案解析 建表语句 create table Student(sid varchar(10),sname varchar(10),sage datetime,ssex nv ...
- mysql sql语句面试经典50题_SQL:经典面试50题
查询" 01 "课程比" 02 "课程成绩高的学生的信息及课程分数 1.1 查询同时存在" 01 "课程和" 02 "课 ...
最新文章
- c++语言函数大全,C++函数
- 【硬件】运放的那些事儿
- 测试Servlet生命周期学习笔记
- python while循环语句-python while循环控制流语句结构与用法
- 论文笔记 Bayesian Probabilistic Matrix Factorizationusing Markov Chain Monte Carlo (ICML 2008)
- 一块电路板从“出生”到“成年”
- PHP开发人员常犯的10个MysqL错误
- 130_传析阅管理系统accdb64位版本
- linux磁珠技术,MACS磁珠分选技术基本原理(图文释义)
- SQL 使用总结二 ( 不同库的日期总结)
- python学习路程1
- 一文详解YOLOX算法实现血细胞检测
- linux eclipse中文设置字体,完美调整Ubuntu下的Eclipse字体及界面显示
- python二级题库(百分之九十原题) 刷题软件推荐 第二套
- python设计教务管理系统_python实现教务管理系统
- WIFI中的关键词,频率,频段,频宽,频带...你晕了没??.
- 低阶的Newton-Cotes求积公式 | 梯形求积公式、Simpson求积公式、Cotes求积公式
- 布鲁特-福斯算法(字符串匹配)
- uefi如何安装linux系统教程,UEFI启动模式下安装Ubuntu教程
- 检测图像中的椭圆 并求其长短轴...
热门文章
- 计算机 打开3389端口,3389端口修改和打开【图文教程】
- cesium加载并聚焦glb模型
- 使用fiddler代替charles将react中的axios请求重定向到本地文件,兼容谷歌浏览器chrome
- 手机拍照上传图片旋转角度问题
- 机房服务器显示器切换,两台电脑主机,一台显示屏,怎么实现切换!需要什么转换器,大概多少...
- SCP、NFS、TFTP的配置
- 初识GeneXus产品
- UCK制作Ubuntu livecd
- ACM 海贼王之伟大航路(深搜剪枝)
- 利用logic friday 把分组密码Present的S盒转化成布尔函数(转载)