9.查询和" 01 "号的同学学习的课程完全相同的其他同学的信息的一种实现方式,及group_concat实现group by组内排序
Posted coderjjp
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了9.查询和" 01 "号的同学学习的课程完全相同的其他同学的信息的一种实现方式,及group_concat实现group by组内排序相关的知识,希望对你有一定的参考价值。
在网上看到一位网友写的实现代码如下:
select * from student where s_id in ( select s_id from score t1 group by s_id having group_concat(c_id) = ( select group_concat(c_id) as str2 from score where s_id = ‘01‘) and s_id != ‘01‘);
但是这段代码有bug,那就是比如s_id=01同学的c_id依次是01、02、03,但是s_id=0x的某位同学的c_id是01、03、02,0x同学是符合条件的,但是上面代码检索不到,一位01同学的字符串是‘01,02,03’,而0x同学的字符串是‘01,03,02’。
所以要想满足需求,需要实现组内排序再拼接,在网上找了很多文章都没有正确解答,最后发现group_concat方法自身是可以实现组内排序的。。。。
具体代码如下:
select * from student where sid in ( select sid from sc t1 group by sid having group_concat(cid ORDER BY cid) = ( select group_concat(cid ORDER BY cid) as str2 from sc where sid = ‘01‘) and sid != ‘01‘);
以上是关于9.查询和" 01 "号的同学学习的课程完全相同的其他同学的信息的一种实现方式,及group_concat实现group by组内排序的主要内容,如果未能解决你的问题,请参考以下文章
sql: 练习题8查询至少有一门课与学号为" 01 "的同学所学相同的同学的信息
excel中怎么用公式提取一段时间内对应的数据的数值,比如本月31天,我只想提取9号至15号的数值。