首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >SQL每年保留学生

SQL每年保留学生
EN

Stack Overflow用户
提问于 2017-10-10 03:28:05
回答 1查看 133关注 0票数 0

我在Access中工作。我有两个表2015F和2016f,它们都包含了每一年的当前学生。我使用student_ID作为两者的主键。

这就是我目前如何获得从2015年到2016年的新生保留率

我从2015F创建了一个新表,其中包含了所有的新生。然后,我从2016F创建了一个新表,其中包含2015年的student_id。最后,我使用下面的查询来获取2015年的新生,这些学生在2016年没有回来。

代码语言:javascript
运行
复制
SELECT [2015Freshmen].*
FROM 2015Freshmen
WHERE [2015Freshmen.SPRIDENSPRIDEN_ID] NOT IN (SELECT  [2015Fenrolled16.SPRIDENSPRIDEN_ID]
FROM [2015Fenrolled16]
);

有没有一种更简单的方法来生成这些结果,只使用2015F和2016F。

我在access数据库工作。

EN

回答 1

Stack Overflow用户

发布于 2017-10-10 03:46:43

任务:返回2015F中不存在的所有2015F记录。

一种使用左连接的方法(返回所有2015年的记录和匹配的2016年的记录,如果存在的话。然后排除存在216记录的所有记录

代码语言:javascript
运行
复制
SELECT * 
FROM 2015F 
LEFT JOIN 2016F
 on 2015F.SPRIDENSPRIDEN_ID = 2016F.SPRIDENSPRIDEN_ID
WHERE 2016F.SPRIDENSPRIDEN_ID is null

或者使用not exists和相关子查询返回2016F中不存在的所有2015F记录。假设两个表中的SPRIDENSPRIDEN_ID相同。

代码语言:javascript
运行
复制
SELECT * 
FROM 2015F 
WHERE NOT EXISTS (SELECT * 
                  FROM 2016F
                  WHERE 2015F.SPRIDENSPRIDEN_ID = 2016F.SPRIDENSPRIDEN_ID)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46653683

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档