首页 > 解决方案 > 查找学习完全相同课程 SQL 的学生列表

问题描述

我已经看到了很多这样的问题,但是在查看了这里的其他问题后仍然不明白该怎么做。

Select s1.email
From student s, student s1
where s1.sname <> 'Alice'
and not exists (select 1
                from enrol e, course c, enrol e1
                where s.sname = 'Alice'
                and s.sid = e.sid
                and s1.sid = e1.sid         
                and e1.code <> e.code );

请参考:http ://sqlfiddle.com/#!9/aaaf58/5

这是我的示例数据库,添加了一些虚拟值,以便我可以测试这个 SQL 查询。

提前致谢。

标签: mysqlsql

解决方案


尝试以下查询

SELECT *
FROM
  (
    SELECT s.sid,s.email,GROUP_CONCAT(e.code ORDER BY code) course_list
    FROM student s
    JOIN enrol e ON e.sid=s.sid
    WHERE s.sname<>'Alice'
    GROUP BY s.sid,s.email
  ) q
WHERE course_list=(
        SELECT GROUP_CONCAT(e.code ORDER BY code) course_list
        FROM enrol e
        JOIN student s ON e.sid=s.sid
        WHERE s.sname='Alice'
      )

推荐阅读