【问题标题】:Why am I not getting any results from this SQL query (MS Access)为什么我没有从这个 SQL 查询中得到任何结果(MS Access)
【发布时间】:2015-07-06 23:20:52
【问题描述】:

我有两个表,一个是 Access 2010 中的本地表(Employees),另一个是 SQL Server 2014 数据库中的链接表(dbo_Employees)。查询在 Access 中运行。

作为参考,两个表是相同的。相同的列,相同的数据。它们实际上是彼此的副本。唯一的区别是我从 SQL Server 表中删除了一条记录。我这样做是因为我试图运行的查询是查找 Employees 表中与 dbo_Employees 表中存在的记录匹配的所有记录。这应该返回除一条已删除记录之外的所有记录。虽然它确实存在于Employees 表中,但由于它不存在于dbo_Employees 表中,因此它将被排除在结果中。这是查询:

select Employees.ID
from Employees
where Employees.ID IN (SELECT dbo_Employees.ID FROM dbo_Employees)

当我运行它时,我什么也得不到。我究竟做错了什么?

【问题讨论】:

  • 你能展示一些这些表格的样本数据吗?我认为它们并不像您认为的那样相同。
  • 是的。如果我打开任一表,我可以看到数据,如果我对任一表的 ID 字段运行 SELECT 查询,我可以看到数据。

标签: sql sql-server ms-access ms-access-2010


【解决方案1】:

您确定两个表中都有匹配的数据吗?

是什么

SELECT
    Employees.ID
    , dbo_Employees.ID
FROM Employees 
    INNER JOIN dbo_Employees ON Employees.ID = dbo_Employees.ID 

返回?它是否返回任何行?

否则,下面的查询返回什么?

SELECT 
    Employees.ID
    , dbo_Employees.ID
FROM Employees 
    FULL JOIN dbo_Employees ON Employees.ID = dbo_Employees.ID

您可以使用第二个查询来查看两个表中匹配的数据。该查询将输出两个表中的数据,同时将匹配的 ID 值放在同一行,如果没有匹配,则在一个或另一个表的对应 ID 列中显示 NULL 值。

(我知道这不是一个合法的答案,它更像是一个评论,但这是 OP 应该检查的第一件事)

【讨论】:

  • 首先回答您的问题:第一个查询返回 0 行。第二个查询返回了一个语法错误(在 FROM 语句中)。我不认为 Access 喜欢 FULL JOIN。无论如何,这帮助我弄清楚出了什么问题,这是我做错了什么。 Access 表中的 ID 字段设置为自动编号,这使其与复制源不同。在试图弄清楚为什么您的查询没有返回任何内容时,我目视查看了试图识别任何内容的数据,然后我找到了它。谢谢您的帮助。现在我知道发生了什么,我可以处理它。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-10-12
  • 2011-12-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-25
相关资源
最近更新 更多