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号的数值。

excel中怎么用公式提取一段时间内对应的数据的数值,比如本月31天,我只想提取9号至15号的数值. 能否有公式

如何配置ibatis语句带小于号的

如何配置ibatis语句带小于号的?

带撇号的 Python 标题()