我已就此主题进行了一些搜索,但没有解决方案似乎有用,所以我的要求可能略有不同。
基本上我有一个“内容”表和一个“file_screenshots”表。 “file_screenshots”表中的每一行都有一个“screenshot_content_id”列。我想从“内容”表中选择,加入“file_screenshots”表,但只为任何单个内容选择最多5个屏幕截图。
如果这不可能,我很乐意使用两个查询,但我不知道如何将结果限制为每个内容只接收5个屏幕截图。
以下是一个示例查询:
SELECT * FROM content
LEFT JOIN file_screenshots
ON file_screenshots.screenshot_content_id = content.content_id
WHERE content_type_id = 4
答案 0 :(得分:2)
假设您的file_screenshots
表格中有某种唯一的ID列,这应该对您有用:
SELECT
c.*,
fs.*
FROM
content c
JOIN
file_screenshots fs
ON (fs.screenshot_content_id = c.content_id)
LEFT JOIN
file_screenshots fs2
ON (fs2.screenshot_content_id = c.content_id AND fs2.id < fs.id)
GROUP BY
fs.id
HAVING
COUNT(*) < 5
ORDER BY c.content_id, fs.id
我已将id列命名为id
。必要时重命名。
如果您想要具有最高ID的5个屏幕截图,请反转fs2.id与fs.id比较。
ON (fs2.screenshot_content_id = c.content_id AND fs2.id > fs.id)