关系表 - 在表A中仅选择表A中不存在的表A中的行

时间:2012-06-18 12:59:37

标签: mysql select key

我有一个存储课程的表A和存储用户当前进度的表B.

表A具有每个课程(courseID)的唯一ID列,表B中也存在相同名称(因此它们的关系)。

我想从表A中获取表B中不存在ID的所有行(例如,目前没有用户进入此课程)

这两个表不使用外键,只使用同名的列。

4 个答案:

答案 0 :(得分:2)

TRY

SELECT A.* FROM tableA A
LEFT JOIN tableB B ON USING (courseID)
WHERE B.courseID IS NULL

答案 1 :(得分:1)

SELECT * FROM A WHERE A.courseID NOT IN (SELECT courseID FROM B);

答案 2 :(得分:0)

您需要LEFT JOIN

SELECT * FROM `tableA`
  LEFT JOIN `tableB` ON `tableA`.`ID`=`tableB`.`ID`
  WHERE `tableB`.`ID` IS NULL;

答案 3 :(得分:0)

您使用的数据库是什么? 如果您使用的是Oracle,我认为您需要:

select A.student_code from A where not exists
( select 'x' from B where B.student_code = A.student_code)

至少那是我认为你要求的......