选择在数据透视表中未显示为对的记录

时间:2018-04-29 12:13:42

标签: mysql sql select

以我的教师科目 instructor_subject 表为例。

instructors
-----------
1
2

subjects
--------
1
2
3

instructor_subject
--------------------------
instructor_id | subject_id
1             | 1
1             | 2

请注意,教练1有2个科目。现在我如何从枢轴表中选择教师1没有的科目(即教师1和科目3)。同时还能够从教师表和主题表中检索其他列。其他列是教师姓名,主题名称等。

1 个答案:

答案 0 :(得分:1)

您可以使用cross join获取instructorssubjects的所有组合,然后过滤掉不匹配的组合:

select i.*, s.*
from instructors i cross join
     subjects s left join
     instructor_subject si
     on si.instructor_id = i.instructor_id and si.subject_id = s.subject_id
where si.instructor_id is null;