3

我想知道检查一个表中的所有值(使用 select 语句创建)是否存在于另一个表(使用 select 命令创建)中的命令都在一个 select 语句中。例如,我有一个属性fid,并且faculty_name教员表中fid, class_name, room_no 在另一个。我如何检查在所有房间里教的所有教员?

4

3 回答 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 回答