假设我有两个表(省略了非必需行):
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_version
s,我如何查询数据库,以便获得与其最新page
关联的所有page_version
s?基本上:
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/