sql - 查询与记录键集引用的每条记录关联的 N 条记录

标签 sql mysql

这是我的场景的简化版本:

  • 我有一个名为 Project 的表,我通过“id”字段引用它。
  • 我有一个名为 Photo 的表,其中有一个名为“project_id”的字段,我用它来将多张照片关联到一个项目。照片表还有一个自动递增的“id”字段,我用它来进行排序等等。

这是我想要完成的:对于项目 ID 值的集合,我希望检索添加到每个项目的最后 5 张照片——当然,理想情况下是在单个查询中。 :-)

换句话说,我不想强​​加单个查询限制,理想情况下我希望为每个项目指定返回照片数量的限制。

我目前将此实现为每个项目一个查询,因此 N 个项目 = N 个查询(一个好的缓存策略肯定会减少伤害,但稍后会出现)。

谁有解决办法?

谢谢。

最佳答案

关于 MySQL 中的“最后 n 项”问题,请看这里:How to select maximum 3 items per users in MySQL? (它在最佳答案中是正确的)。

当您从那里获取它时,您所缺少的只是与您的 Projects 表的 JOIN,这应该很容易做到。

关于sql - 查询与记录键集引用的每条记录关联的 N 条记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/314187/

相关文章:

php - 在 PHP 中进行国际化的最佳方法是什么?

MySQL 预定义值

mysql - 聚合函数上的 RANK OVER PARTITION BY

sql - 价格字段的字符串、小数或 float 据类型?

sql 查询(可能可以通过 pivot/unpivot 解决?)

php - 转到带有重复按钮的 PHP 页面(提交数据)?

mysql - 在包含 date_format 的 sql 语句中使用参数

php - 返回index.php时不执行以增量1增加的更新语句

sql - 如何引用刚刚插入的值(在 TRIGGER 语句中)?

mysql - 从表中选择取决于两列中的值