【问题标题】:msaccess join most recent matching record from one table to anotherms 访问将最近匹配的记录从一个表连接到另一个表
【发布时间】:2015-08-01 19:42:25
【问题描述】:

我想要的结果。

+--------+-------------+------------+--------+ |标签 |最近 |评论 |作者 | +--------+-------------+------------+--------+ |标签001 | 2015-07-23 |东西3 |上午 | |标签002 | 2015-07-25 |东西5 |国阵 | +--------+-------------+------------+--------+

我的桌子:

状态表格

+--------+-------------+------------+ |标签 |状态 |日期状态 | +--------+-------------+------------+ |标签001 |未开始 | | |标签002 |完成 | 2015-07-23 | +--------+-------------+------------+

评论表格

+----+--------+-------------+------------+-------- + |身份证 |标签 |创建日期 |评论 |作者 | +----+--------+-------------+------------+-------- + | 1 |标签001 | 2015-07-22 |东西1 | JS | | 2 |标签002 | 2015-07-23 |东西2 | JS | | 3 |标签001 | 2015-07-23 |东西3 |上午 | | 4 |标签002 | 2015-07-23 |东西4 |作为 | | 5 |标签002 | 2015-07-25 |东西5 |国阵 | +----+--------+-------------+------------+-------- +

我尝试了 4 种不同的查询,每一种都变得越来越复杂,但仍然无法正常工作。

我尝试过的查询:

查询 1)

SELECT Comments.[Tag], Max(Comments.[DateCreated]) AS most\_recent
FROM Comments
GROUP BY Comments.[Tag];

结果 1)

+--------+-------------+ |标签 |最近 | +--------+-------------+ |标签001 | 2015-07-23 | |标签002 | 2015-07-25 | +--------+-------------+

只给我最近的日期,但没有值。

查询 2)

SELECT Comments.[Tag], Max(Comments.[DateCreated]) AS most\_recent
FROM Comments
GROUP BY Comments.[Tag];

结果 2)

+--------+-------------+------------+ |标签 |最近 |评论 | +--------+-------------+------------+ |标签001 | 2015-07-22 |东西1 | |标签001 | 2015-07-23 |东西3 | |标签002 | 2015-07-23 |东西2 | |标签002 | 2015-07-23 |东西4 | |标签002 | 2015-07-25 |东西5 | +--------+-------------+------------+

现在我看到了我想要的所有信息,但我无法过滤最新的信息。

我尝试了 DISTINCT,但没有成功。

查询 3)

从这里修改:MYSQL - Join most recent matching record from one table to another

SELECT Status.\*,Comments.\*
FROM Status S
LEFT JOIN Comments C ON S.tag = C.tag
JOIN(SELECT x.tag, MAX(x.DateCreated) AS MaxCommentDate FROM Comments x
GROUP BY x.tag) y ON y.tag = x.tag AND y.MaxCommentDate = x.DateCreated

结果:查询表达式中的语法错误(缺少运算符)

查询 4)

从这里修改: Left Join to most recent record

SELECT
Status.\*,Comments.\*
FROM Status S
LEFT JOIN
(
Comments C
INNER JOIN
(
SELECT
x.tag, MAX(x.DateCreated) AS MaxCommentDate
FROM
Comments x
GROUP BY
x.tag
)
y
ON y.tag = x.tag
AND y.MaxCommentDate = x.DateCreated
)
ON S.tag = C.tag;

结果:JOIN 语法错误

运气不好...先谢谢了。

谢谢。

【问题讨论】:

    标签: ms-access join ms-access-2010 left-join


    【解决方案1】:

    以下内容在 Access 2010 中似乎对我有用:

    SELECT c.Tag, c.DateCreated AS most_recent, c.Comment, c.Author
    FROM
        (
            SELECT Tag, MAX(DateCreated) AS MaxDate 
            FROM Comments 
            GROUP BY Tag
        ) AS md
        INNER JOIN
        Comments AS c
            ON c.Tag = md.Tag AND c.DateCreated = md.MaxDate
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-27
      • 2015-03-14
      • 2011-09-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多