目前我有这个查询:
SELECT post.id AS postID, sCom.id as CommentID FROM `post` LEFT JOIN (SELECT * FROM `comment` LIMIT 5) AS sCom ON sCom.post_id = post.id;
输出:
postID | CommentID
1 | 1
2 | null
3 | null
4 | 2
5 | 3
5 | 4
5 | 5
它有效,但它在加入之前限制了评论表。结果是,它选择了前 5 条评论并将其映射。id 为 5 的所有评论都会被忽略。
如何重写查询以选择最多 5 条评论的帖子?
当前表结构:
邮政 :
如果不存在 `post` 则创建表 ( `id` int(11) NOT NULL AUTO_INCREMENT, `feed_id` int(11) 默认为空, `user_id` int(11) 默认为 NULL, `origin_id` int(11) 默认为 NULL, `content` longtext COLLATE utf8_unicode_ci NOT NULL, `启用` tinyint(1) NOT NULL, `created_at` 日期时间不为空, `updated_at` 日期时间不为空, 主键(`id`), KEY `IDX_5A8A6C8D51A5BC03` (`feed_id`), KEY `IDX_5A8A6C8DA76ED395` (`user_id`), KEY `IDX_5A8A6C8D56A273CC`(`origin_id`) ) 引擎=InnoDB 默认字符集=utf8 排序=utf8_unicode_ci AUTO_INCREMENT=6 ;
评论:
如果不存在 `comment` 则创建表 ( `id` int(11) NOT NULL AUTO_INCREMENT, `feed_id` int(11) 默认为空, `user_id` int(11) 默认为 NULL, `post_id` int(11) 默认为 NULL, `content` longtext COLLATE utf8_unicode_ci NOT NULL, `启用` tinyint(1) NOT NULL, `created_at` 日期时间不为空, `updated_at` 日期时间不为空, 主键(`id`), KEY `IDX_9474526C51A5BC03` (`feed_id`), KEY `IDX_9474526CA76ED395` (`user_id`), KEY `IDX_9474526C4B89032C`(`post_id`) ) 引擎=InnoDB 默认字符集=utf8 排序=utf8_unicode_ci AUTO_INCREMENT=11 ;
谢谢