我试图选择最新的updated
(字段)pages
(表格),不包括隐藏的页面(visible
=“n”)。但是,我想通过slug
对页面进行分组,因此每个子弹只能得到一个结果。SQL LEFT JOIN问题
下面的查询有点儿工作,但它只会选择对每个塞最新更新的页面 - 那么,如果该页面恰好被隐藏,它从结果:(删除它在这种情况下,我只是想与塞最新更新页面是可见。
SELECT `p1`.`id` AS `pID`, `p1`.`slug` AS `url`, `p1`.`revision`, `p1`.`title`, `p1`.`published`, `p1`.`updated`, (SELECT COUNT(*) FROM `pages` WHERE `slug` = `url` AND `visible` = "y") AS `revisionCount`, (SELECT COUNT(*) FROM `tests` WHERE `pageID` = `pID`) AS `testCount`
FROM `pages` `p1`
LEFT JOIN `pages` `p2` ON `p1`.`slug` = `p2`.`slug` AND `p1`.`updated` < `p2`.`updated`
WHERE `p2`.`updated` IS NULL AND `p1`.`visible` = "y"
ORDER BY `p1`.`updated` DESC
所以你想要每个slu latest的最新更新和可见页?我猜更新是一个日期或int? – MrSoundless 2010-08-04 23:34:50
@MrSoundless:更新日期 – naburi 2010-08-05 00:09:28