Sql 左外联接以获取所有行?

Sql 左外联接以获取所有行?,sql,ms-access,join,Sql,Ms Access,Join,我正在使用access数据库,我有一些这样设置的表 Table1(Table1Id, Field1, Field2, ...) Table2(Table2Id, Table1Id, AuditDate, Field1, Field2, ...) 我试图选择表1中的每条记录,以及表2中具有最新审核日期的记录。如果表2中没有条目可以连接到表1中,我只想填充表1中的一行内容和一组空字段,表2中的数据将来自这些字段。这是我到目前为止提出的问题 SELECT Table1.TableId,

我正在使用access数据库,我有一些这样设置的表

Table1(Table1Id, Field1, Field2, ...)
Table2(Table2Id, Table1Id, AuditDate, Field1, Field2, ...)
我试图选择表1中的每条记录,以及表2中具有最新审核日期的记录。如果表2中没有条目可以连接到表1中,我只想填充表1中的一行内容和一组空字段,表2中的数据将来自这些字段。这是我到目前为止提出的问题

SELECT Table1.TableId, 
       Table1.Field1, 
       Table1.Field2, 
       Table2.Field1, 
       Table2.Field2 
FROM Table1 
LEFT OUTER JOIN Table2 ON Table1.TableId = Table2.Table1Id 
WHERE Table2.AuditDate = (SELECT MAX(AuditDate) FROM Table2 WHERE Table1.TableId = Table2.Table1Id)

问题是它只返回两条记录。表2中只有两个条目,但我希望它也为表1中的每个记录返回一行数据,而不仅仅是在表2中找到匹配项的记录。

猜测如果删除外部条目,您将获得表1中的每个条目

编辑:但是如果表2中的条目比表1中的条目多,这仍然是一个问题。
也许可以尝试完全联接?

猜测如果删除外部联接,将获得表1中的每个条目

编辑:但是如果表2中的条目比表1中的条目多,这仍然是一个问题。
也许可以尝试完全连接?

问题是这行:

WHERE Table2.AuditDate = ...
如果不存在
Table2
条目,
AuditDate
将为空。因此,您需要对此进行测试:

WHERE Table2.Table2Id IS NULL OR Table2.AuditDate = ...

问题在于这一行:

WHERE Table2.AuditDate = ...
如果不存在
Table2
条目,
AuditDate
将为空。因此,您需要对此进行测试:

WHERE Table2.Table2Id IS NULL OR Table2.AuditDate = ...

需要一个SQL提琴来完成这项工作。需要一个SQL提琴来完成这项工作。