标签:bsp 排序 cat sele code group by 没有 style group
在网上看到一位网友写的实现代码如下:
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组内排序
标签:bsp 排序 cat sele code group by 没有 style group
原文地址:https://www.cnblogs.com/coderjjp/p/12932613.html