現在、私はこのクエリを持っています:
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
動作しますが、JOINする前にコメントテーブルを制限します。その結果、最初の 5 つのコメントが選択されてマップされます。ID が 5 を超えるコメントはすべて無視されます。
最大 5 つのコメントが選択された投稿を選択するようにクエリを書き直すにはどうすればよいですか?
現在のテーブル構造:
役職 :
CREATE TABLE IF NOT EXISTS `post` ( `id` int(11) NOT NULL AUTO_INCREMENT, `feed_id` int(11) DEFAULT NULL, `user_id` int(11) DEFAULT NULL, `origin_id` int(11) DEFAULT NULL, `content` longtext COLLATE utf8_unicode_ci NOT NULL, `enabled` tinyint(1) NOT NULL, `created_at` 日時 NOT NULL, `updated_at` 日時 NOT NULL, 主キー (`id`)、 KEY `IDX_5A8A6C8D51A5BC03` (`feed_id`), KEY `IDX_5A8A6C8DA76ED395` (`user_id`), KEY `IDX_5A8A6C8D56A273CC` (`origin_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=6 ;
コメント:
CREATE TABLE IF NOT EXISTS `comment` ( `id` int(11) NOT NULL AUTO_INCREMENT, `feed_id` int(11) DEFAULT NULL, `user_id` int(11) DEFAULT NULL, `post_id` int(11) デフォルト NULL, `content` longtext COLLATE utf8_unicode_ci NOT NULL, `enabled` tinyint(1) NOT NULL, `created_at` 日時 NOT NULL, `updated_at` 日時 NOT NULL, 主キー (`id`)、 KEY `IDX_9474526C51A5BC03` (`feed_id`), KEY `IDX_9474526CA76ED395` (`user_id`), キー `IDX_9474526C4B89032C` (`post_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=11 ;
ありがとう