检查一个表的列中的所有值是否都存在于另一个表中

时间:2012-10-29 16:17:50

标签: sql oracle database

我想知道检查一个表中的所有值(使用select语句创建)是否存在于另一个表中(使用select命令创建)都在一个select语句中的命令。例如,我有一个属性{ 教师表中的{1}}和fid以及另一个中的faculty_namefidclass_name o。 如何查看在所有教室中教授的所有教师?

3 个答案:

答案 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