选择数据透视表中不成对出现的记录

2ic8powd  于 2021-06-21  发布在  Mysql
关注(0)|答案(1)|浏览(290)

例如,我有一个讲师、主题和讲师主题表。

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

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

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

注意,讲师1有2个科目。现在我如何从透视表中选择讲师1没有的科目(即讲师1和科目3)。同时还可以从讲师表和主题表中检索其他列。其他列是讲师姓名、学科名称等。

cetgtptt

cetgtptt1#

你可以用 cross join 得到所有的 instructors 以及 subjects 然后过滤掉不匹配的:

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;

相关问题