我在Access工作。我有两张表[2015F]和[2016f],它们都包含每年的现有学生。我使用student_ID作为两者的主键。
这就是我目前获得2015年至2016年新生入学率的方式
我从[2015F]创建了一个包含所有新生的新表。然后我从[2016F]创建了一个新表,其中包含了2015年的student_id。最后,我使用下面的查询来获得2015年新生的学生,这些学生在2016年没有回来。
SELECT [2015Freshmen].*
FROM 2015Freshmen
WHERE [2015Freshmen.SPRIDENSPRIDEN_ID] NOT IN (SELECT [2015Fenrolled16.SPRIDENSPRIDEN_ID]
FROM [2015Fenrolled16]
);
仅使用[2015F]和[2016F]是否有更简单的方法来生成这些结果。
我在访问数据库工作。
答案 0 :(得分:1)
任务:返回2015F中2016F中不存在的所有记录。
使用LEFT Join的一种方法(返回所有2015年记录和匹配的2016记录(如果存在)。然后排除存在216记录的所有记录
SELECT *
FROM 2015F
LEFT JOIN 2016F
on 2015F.SPRIDENSPRIDEN_ID = 2016F.SPRIDENSPRIDEN_ID
WHERE 2016F.SPRIDENSPRIDEN_ID is null
或者使用不存在和相关的子查询 返回2016F中不存在的所有2015F记录。假设两个表中的SPRIDENSPRIDEN_ID相同。
SELECT *
FROM 2015F
WHERE NOT EXISTS (SELECT *
FROM 2016F
WHERE 2015F.SPRIDENSPRIDEN_ID = 2016F.SPRIDENSPRIDEN_ID)