我可以用什么方式替换MySQL中的INTERSECT



我有几个表(表、教员、系、科目等(教员包含名称字段。所有其他都有主键和外键。每个学院都有一些系,系里有老师,每个老师都有自己的职位,每个科目都有自己类型、讲座、实习等。因此,我搜索了院系名称,其中^strongtext-s.name='数据库'或s.name='C'和l.type='讲座'-t.post="中心"下面是一个使用INTERSECT的示例查询,但我需要一个在MySQL中工作的查询。我曾尝试使用INNER JOIN,但它说";Coulmn";名称";字段列表中存在歧义。

select f.name
from faculty f, subject s, department d, teacher t, lecture l
where f.facpk=d.facfk and d.deppk=t.depfk and t.tchpk=l.tchfk and l.sbjfk=s.sbjpk and s.name = 'Data bases' or s.name = 'C' and l.type = 'Lecture'
intersect
select f.name
from faculty f, teacher t, department d
where f.facpk=d.facfk and d.deppk=t.depfk and t.post ='Docent';

一种方法是使用Distinct和内部联接:

SELECT DISTINCT 
f.name
FROM
faculty f
INNER JOIN  department d
ON f.facpk = d.facfk
INNER JOIN  teacher t
ON d.deppk = t.depfk
INNER JOIN  lecture l
ON  t.tchpk = l.tchfk 
INNER JOIN subject s
ON l.sbjfk = s.sbjp   
AND (
s.name = 'Data bases'
OR (s.name = 'C' AND l.type = 'Lecture')
)
INNER JOIN  teacher t2
ON d.deppk = t2.depfk
AND t2.post = 'Docent';

最新更新