仅显示已加入MySQL表的最新日期

Jon*_*ury 12 mysql sql join

我有2个表,一个"文档"表和一个"内容"表.它们看起来像这样(简化):

document table:
docID
docTitle

content table:
contentID
docID
dateAdded
content
Run Code Online (Sandbox Code Playgroud)

对于每个内容更改,都会在"内容"表中插入新记录.这样,所有变化都有完整的历史记录.我希望获得所有文档的列表,并加入最新内容.它应该返回docID,docTitle和相关内容记录以及最新的"dateAdded"值.我的大脑现在正在让我失望,我将如何创建这个联接?

Chr*_*ard 29

这可以通过子查询来完成:

SELECT d.docID, docTitle, c.dateAdded, c.content
FROM document d LEFT JOIN content c ON c.docID = d.docID
WHERE dateAdded IS NULL
    OR dateAdded = (
        SELECT MAX(dateAdded)
        FROM content c2
        WHERE c2.docID = d.docID
    )
Run Code Online (Sandbox Code Playgroud)

这称为"分组最大"查询

编辑:使查询返回所有文档行,如果没有相关内容则返回NULL.

  • 谢谢你的名字.每当我有一个SQL问题时,我都不知道谷歌会做什么,这使得找到解决方案变得更加困难.:) (3认同)