sql - 比较两个不同但结构相同的数据库中的两个表未返回预期结果
问题描述
我不知道如何解决这个问题。
我正在尝试从 2020 年数据库中查找不在 2019 年数据库中的所有教授。
这两个数据库在结构上是相同的,只是有些数据不同。
如果我运行此查询:
SELECT * FROM year_2020.dbo.classList
WHERE professorID NOT IN(SELECT professorID FROM year_2019.dbo.classList)
我得到 0 个结果
我知道这是不对的。
因为我可以取一个 2020 的教授 ID:
SELECT * FROM year_2020.dbo.classList WHERE classID = 'bb101'
我看到'rts103'的教授ID是这样的:
classID dateStart DeptId professorID
bb101 2/1/2020 soc3 rts103
然后我可以为 2019 年做同样的事情:
SELECT * FROM year_2019.dbo.classList WHERE classID = 'bb101'
我看到他不在这个数据库中:
classID dateStart DeptId professorID
bb101 2/1/2019 soc3 NULL
所以我不确定发生了什么。
有没有更好的方法来制定这个查询?
谢谢!
解决方案
我会推荐not exists
。此外,您的问题使您看起来想要在professorID
and classID
上关联行,因此:
SELECT c20.*
FROM year_2020.dbo.classList c20
WHERE NOT EXISTS (
SELECT 1
FROM year_2019.dbo.classList c19
WHERE c19.professorID = c20.professorID AND c19.classID = c20.classID
)
推荐阅读
- xpages - 您可以多次将相同的自定义控件添加到 xpage
- java - 使用 InetAddress 收集网络接口
- arm - 为 arm 交叉编译 iptables 的问题
- flutter - 如何将图像数据从 FirebaseStorage 保存到数据库并在 Flutter 中使用 CircleAvatar 检索它
- python - 在 Pandas 数据框中使用 groupby 计算
- linux - sed在linux中为字符串添加前缀的用法
- java - 安装后运行时Java“handshake_failure异常”,但从intelliJ运行时不会
- python - 如何在 Celery 中实现已经编写好的 python 脚本
- html - 只刷新一次页面
- python - + 的 mypy 操作数类型(“str”和“None”)