我想知道检查一个表中的所有值(使用select语句创建)是否存在于另一个表中(使用select命令创建)都在一个select语句中的命令。例如,我有一个属性{ 教师表中的{1}}和fid
以及另一个中的faculty_name
,fid
,class_name
o。 如何查看在所有教室中教授的所有教师?
答案 0 :(得分:5)
质疑问题,但
--
-- all faculty without a class
--
select *
from faculty f
where not exists ( select *
from class c
where c.fid = f.fid
)
--
-- all classes wihout faculty
--
select *
from class c
where not exists ( select *
from faculty f
where f.fid = c.fid
)
--
-- all-in-one. Each returned row represents
-- either a faculty or class without a match
-- in the other
--
select *
from faculty f
full join class c on c.fid = f.fid
where c.fid is null
or f.fid is null
答案 1 :(得分:0)
您可以尝试这样的事情,
select a.faculty_name, b.class_name, b.room_no
from faculty a, Table2 b
where a.fid = b.fid
答案 2 :(得分:-1)
假设你有两张桌子:教师和班级。 Fid(faculty id)应该是教师表上的主键,以及类表上的外键。
这里只能找到你要找的两个案例:所有院系都有班级或只有一些院系。
找到有班级的人:
SELECT
fid,
faculty_name
FROM
faculty f
INNER JOIN
class c
ON
f.fid = c.fid
找到没有上课的人:
SELECT
fid,
faculty_name
FROM
faculty f
LEFT OUTER JOIN
class c
ON
f.fid = c.fid
WHERE
c.fid is null