Show only most recent date from joined MySQL table

后端 未结 5 1623
抹茶落季
抹茶落季 2020-12-28 20:16

I have 2 tables, a \"document\" table and a \"content\" table. They look like this (simplified):

document table:
docID
docTitle

content table:
contentID
doc         


        
5条回答
  •  佛祖请我去吃肉
    2020-12-28 20:52

    Use:

    SELECT t.docid, 
           t.docTitle, 
           mc.dateAdded, 
           mc.content
      FROM DOCUMENT t
      JOIN (SELECT c.docid,
                   c.content,
                   MAX(c.dateAdded)
              FROM CONTENT c
          GROUP BY c.docid, c.content) mc ON mc.docid = t.docid 
                                         AND mc.dateadded = t.dateadded
    

    This should be faster than a correlated subquery.

    Alternative for when there are no content records for a document:

       SELECT t.docid, 
              t.docTitle, 
              mc.dateAdded, 
              mc.content
         FROM DOCUMENT t
    LEFT JOIN (SELECT c.docid,
                      c.content,
                      MAX(c.dateAdded)
                 FROM CONTENT c
             GROUP BY c.docid, c.content) mc ON mc.docid = t.docid 
                                         AND mc.dateadded = t.dateadded
    

提交回复
热议问题