MySQL - 为每篇博客文章记录获取3张照片记录

时间:2012-07-11 14:58:21

标签: mysql sql

正如标题所示,我想列出我的博客文章,每篇文章显示3张照片。不是每篇文章都有照片。

示例结果

enter image description here

我的尝试

SELECT a.article_id, a.title, a.content, a.published, t.topic_title, au.firstname, au.lastname,
GROUP_CONCAT(CONVERT(p.photo_id,CHAR(8)) ORDER BY p.photo_id ASC SEPARATOR ';') AS photos
FROM blog_articles a
LEFT JOIN photos p USING (article_id)
LEFT JOIN blog_topics t ON a.topic_id = t.topic_id
LEFT JOIN admins au ON a.author_id = au.admin_id
GROUP BY a.article_id

哪个产生了冒号分隔的照片ID列表,就像我想要的那样,但我真的只需要3个,而不是全部。显然我可以在我的应用程序代码中抓取3个ID,但我想停止收集MySQL中的所有数据。这就是它产生的:

14   This is a blog title   2012-07-09    12;13;14;15;16;17;18;19;20;21;22;23;24;25

但我想要的只是:

14   This is a blog title   2012-07-09    12;13;14

对此的任何帮助都会很棒。

1 个答案:

答案 0 :(得分:3)

您可以使用substring_index

扩展group_concat
SUBSTRING_INDEX(
    GROUP_CONCAT(
        CONVERT(p.photo_id,CHAR(8)) 
        ORDER BY p.photo_id ASC 
        SEPARATOR ';'
    ),
    ';',
    3
) AS photos