with StudentTakes (name, id, course_id) as (
select name, student.id, course_id
from takes join student on takes.id = student.id
)
select distinct name, id
from StudentTakes a
where a.name in (
select b.name
from StudentTakes b
where b.name = a.name and b.id <> a.id and a.course_id = b.course_id
)
order by name;
我想找到name
和ID
的学生,每个学生的名字与其他学生的名字相同,而且同名学生必须在班级中学习相同的course_id
。表格takes
包含ID
和course_id
。表格学生包含ID
和name
。具有相同名称的学生总数 788 ,上述查询的结果为755.有人可以解释为什么当我更改上面的代码时,结果为 788 < / strong>即可。
with StudentTakes (name, id, course_id) as (
select name, student.id, course_id
from takes join student on takes.id = student.id
)
select distinct name, id
from StudentTakes a
where a.name in (
select b.name
from StudentTakes b
where b.name = a.name and b.id <> a.id and a.course_id <> b.course_id -- CHANGE
)
order by name;
答案 0 :(得分:0)
您的查询似乎在告诉您
这些结果本身并不一致。