2016-04-20 3 views
1

コメントテーブルがMySQLは0,2が

+------+----------+ 
| id | comment | 
+------+----------+ 
| 1 | foo  | 
| 2 | bar  | 
| 3 | foobar | 
+------+----------+ 

応答テーブルが

+------+----------+------------+ 
| id | reply |comment_id | 
+------+----------+------------+ 
| 1 | nice lol | 1   | 
| 2 | ok ok | 2   | 
| 3 | hello | 1   | 
| 4 | hello2 | 1   | 
| 5 | hello1 | 1   | 
+------+----------+------------+ 



SELECT 
`comment`.`comment`, 
`x`.`reply` 
FROM `comment` LEFT JOIN 
(SELECT GROUP_CONCAT(`reply`) as reply ,reply.commnt_id FROM `reply` 
GROUP BY `reply`.`comment_id` ORDER BY `reply`.`id` LIMIT 0,1)x ON x.comment_id = comment.id 

結果が第二のコメントがnull持っていますが、もし、なぜ質問

+----------+-----------------+ 
| comment | reply   | 
+----------+-----------------+ 
| foo | nice lol,hello | 
| bar | NULL   | 
| off | null   | 
+------+---------------------+ 

になります限界に参加残さ私は限界0を作るそれはそれを示す

+0

あなたは、各コメントのトップ2の回答を表示しようとしていますか? –

+0

@ShekharJoshiはい –

+1

正しいスペルが「リプレイ」ではなく「返信」であることを指摘しておく価値があります。チームがあれば、これを修正してくれてありがとう! – Arth

答えて

3

Mysqlはgroup by節の制限をサポートしていません。以下に示すような特徴のこのタイプを達成するために、我々はGROUP_CONCATハックすることができます:これはあなたの応答がありませんことを検討している

SELECT 
comment.comment, 
x.replay 
FROM comment LEFT JOIN 
(SELECT 
    REPLACE(substring_index(group_concat(replay SEPARATOR '@@'), '@@', 2), '@@', ',') as replay ,replay.commnt_id 
    FROM replay 
    GROUP BY replay.comment_id ORDER BY replay.id LIMIT 0,1)x 
ON x.comment_id = comment.id 

@@それらに。

関連記事:

GROUP_CONCAT with limit

Mysql group_concat limit rows in grouping

+0

ありがとうございます:) –