以下是我的方案的简化版本:
以下是我想要完成的内容:对于项目ID值的集合,我希望检索添加到每个项目的最后5张照片 - 理想情况下,在单个查询中。 : - )
换句话说,我最好不要强加一个查询限制,而是要根据返回的照片数量指定每个项目的限制。
我目前正在将这个实现为每个项目的一个查询,因此N个项目= N个查询(一个好的缓存策略肯定会减少伤害,但这会在以后发生)。
任何人都有解决方案吗?
感谢。
答案 0 :(得分:1)
对于MySQL中的“最后n项”问题,请看这里:How to select maximum 3 items per users in MySQL?(在最佳答案中就是这样)。
当你从那里拿走它时,你所缺少的只是与你的Projects
表格的联接,这应该很容易。
答案 1 :(得分:0)
SELECT project.*, photo.*
FROM photo
LEFT JOIN project USING project_id
WHERE photo.project_id = '{$id}'
ORDER BY photo_id DESC
LIMIT project.project_photos_limit
试试吗? (显然你的字段名称)
答案 2 :(得分:0)
philistyne解决方案略有改变:
SELECT project.*, photo.*
FROM photo
LEFT JOIN project USING(project_id)
WHERE photo.project_id IN (comma separated list of project ids)
ORDER BY photo_id DESC
LIMIT project.project_photos_limit
虽然我不确定LIMIT是否允许您使用字段来执行此操作。