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