MySQL的左连接:限制父表

问题描述:

我试图从数据库得到的结果,但结果限制在右MySQL的左连接:限制父表

SELECT posts.text, comments.text 
FROM posts 
LEFT JOIN comments ON comments.postid= post.id 
Limit 0,5 

以上将返回后的第一次为5条,如果有为五个评论。不过,我想返回所有评论,但在5篇帖子后停止查询。我如何去做这件事?


对不起我的问题是在一开始有点不清楚,因为我写的LEFT JOIN错误..

这是解决我的问题:

SELECT posts.text, comments.text 
FROM (SELECT * FROM posts Limit 0,5) 
LEFT JOIN comments ON comments.postid= post.id 

另外一个问题。我只将posts.text指定为select列,但现在所有列都将返回,因为子查询中包含“*”?

+0

我很困惑。一个帖子是否只有一个评论,或者应该是'post.id = comment.postId'? – 2013-03-06 08:43:39

+0

对不起,是的你说得对,我已经修改了 – user1020317 2013-03-06 10:09:09

如果这就是你想要的,使用子查询只得到5个父母。

SELECT p.text PostText, 
     c.text CommentText 
FROM 
     (
      SELECT id, text 
      FROM posts 
      LIMIT 5 
     ) p 
     LEFT JOIN comments c 
      ON c.postId = p.id; 
+0

+1的很好的解决方案 – 2013-03-06 08:30:49

+0

以我的经验MySQL中的子查询可能比预期的要慢得多 – cja 2013-03-06 08:51:53

+0

@cja总是有例外。但你如何解决这个问题,如果不使用子查询? – 2013-03-06 08:53:18