码迷,mamicode.com
首页 > 编程语言 > 详细

9.查询和" 01 "号的同学学习的课程完全相同的其他同学的信息的一种实现方式,及group_concat实现group by组内排序

时间:2020-05-21 19:57:14      阅读:172      评论:0      收藏:0      [点我收藏+]

标签: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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!