【问题标题】:Access Using Inner Join to select 1 record from another table with the Max Date使用内部联接访问以从另一个表中选择 1 条记录,该记录具有最大日期
【发布时间】:2016-06-08 20:06:46
【问题描述】:

我在 Access 中编写了以下查询。

我终于没有错误地保存了,但是当我点击 DataSheet View 时,表格显示了表格 2 中的所有记录。

Table1 具有唯一 ID,并且该 ID 在 table2 的多行中(1 到多个)。我只需要通过选择 Max(MyRecentDate) 来获取最近的记录。但是,我的返回视图包含 ID 的所有行。如何让此查询仅从 table2 中选择一条具有 MAX Date 的记录?

谢谢....

SELECT 
[table1].FirstName, 
[table1].MiddleName, 
[table1].LastName,  
[table2].NameDesc,
[table2].MyRecentDate



FROM [table1] 
INNER JOIN
        (
            SELECT [table2].ID,  [table2].NameDesc, MAX( [table2].MyRecentDate) as MyRecentDate
            FROM    [table2]
            GROUP BY  [table2].ID,[table2].NameDesc


        ) [table2]
ON [table1].[ID] = [table2].[ID];

【问题讨论】:

  • 将选择 Max (..) 更改为 MaxDate 并添加 On ... 和 [table2].MyRecentDate = MaxDate
  • 我认为NameDesc 可以不同ID?

标签: sql ms-access


【解决方案1】:

这应该可以正常工作。请注意,您可以使用 max 代替 TOP 1

SELECT 
[table1].FirstName, 
[table1].MiddleName, 
[table1].LastName, 
(SELECT TOP 1 [table2].NameDesc FROM [table2] WHERE [table1].[ID] = [table2].[ID]) AS NameDesc,
(SELECT TOP 1 [table2].MyRecentDate FROM [table2] WHERE [table1].[ID] = [table2].[ID]) AS MyRecentDate

FROM [table1] 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-10-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多