我有存储课程的表 A 和存储用户当前进度的表 B。
表 A 具有每个课程的唯一 ID 列(courseID),该列也存在于表 B 中,具有相同的名称(因此它们的关系)。
我想从表 A 中获取表 B 中不存在其 ID 的所有行。(例如,当前没有用户进入此课程)
这两个表不使用外键,只是一个同名的列。
尝试
SELECT A.* FROM tableA A
LEFT JOIN tableB B ON USING (courseID)
WHERE B.courseID IS NULL
SELECT * FROM A WHERE A.courseID NOT IN (SELECT courseID FROM B);
你用的是什么数据库?如果您使用的是 Oracle,我认为您想要:
select A.student_code from A where not exists
( select 'x' from B where B.student_code = A.student_code)
至少这就是我认为你所要求的..
你需要LEFT JOIN
SELECT * FROM `tableA`
LEFT JOIN `tableB` ON `tableA`.`ID`=`tableB`.`ID`
WHERE `tableB`.`ID` IS NULL;