0

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

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

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

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

4

4 回答 4

2

尝试

SELECT A.* FROM tableA A
LEFT JOIN tableB B ON USING (courseID)
WHERE B.courseID IS NULL
于 2012-06-18T13:03:01.077 回答
1
SELECT * FROM A WHERE A.courseID NOT IN (SELECT courseID FROM B);
于 2012-06-18T13:06:11.737 回答
0

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

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

至少这就是我认为你所要求的..

于 2012-06-18T13:05:33.623 回答
0

你需要LEFT JOIN

SELECT * FROM `tableA`
  LEFT JOIN `tableB` ON `tableA`.`ID`=`tableB`.`ID`
  WHERE `tableB`.`ID` IS NULL;
于 2012-06-18T13:02:59.167 回答