我想知道检查一个表中的所有值(使用 select 语句创建)是否存在于另一个表(使用 select 命令创建)中的命令都在一个 select 语句中。例如,我有一个属性fid
,并且faculty_name
在教员表中和fid
, class_name
, room_n
o 在另一个。我如何检查在所有房间里教的所有教员?
问问题
13233 次
3 回答
7
问题问得不好,但是
--
-- 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
于 2012-10-29T16:35:51.387 回答
0
你可以试试这样的
select a.faculty_name, b.class_name, b.room_no
from faculty a, Table2 b
where a.fid = b.fid
于 2012-10-29T16:23:49.737 回答
-1
假设您有两个表:faculty 和 class。Fid (faculty id) 应该是faculty 表的主键和class 表的外键。
这里只能是您要寻找的两种情况:所有学院都有课程或只有一些学院。
要查找谁有课:
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
于 2012-10-29T23:18:34.333 回答