首页 > 解决方案 > 比较两个不同但结构相同的数据库中的两个表未返回预期结果

问题描述

我不知道如何解决这个问题。

我正在尝试从 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

所以我不确定发生了什么。

有没有更好的方法来制定这个查询?

谢谢!

标签: sqlsql-servertsqlsql-server-2012subquery

解决方案


我会推荐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
)

推荐阅读