假设我有两个表(省略了非必需行):

Table `pages`
page_id | page_key
      1 |     home
      2 |    about


Table `page_versions`
page_id | page_version | page_title | page_content
      1 |            2 |       Home | Lorem Ipsum...
      1 |            4 |       Home | Dolor Sit...
      2 |            3 |      About | Nunc Nisl...
      2 |            5 |      About | Proin Alt...

如果每个page都有多个page_versions,我如何查询数据库,以便获得与其最新page关联的所有page_versions?
基本上:
page_id | page_key | page_version | page_title | page_content
      1 |     home |            4 |       Home | Dolor Sit...
      2 |    about |            5 |      About | Proin Alt...

最佳答案

我更喜欢将FROM子句中的子查询作为派生表执行,因此它只运行一次子查询。

SELECT p.page_id, p.page_key, pv.page_version, pv.page_title, pv.page_content
FROM page_versions pv
INNER JOIN (SELECT page_id, MAX(page_version) AS page_version
    FROM page_versions GROUP BY page_id) AS max_page_versions
   USING (page_id, page_version)
INNER JOIN pages p USING (page_id);

与@FilipeSilva的答案进行比较,后者对外部查询的每一行执行一次相关的子查询。那可能对表演不利。

关于mysql - MySQL-给定多个关联,如何获取多个记录的最新关联?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19058168/

10-16 05:26