2013-03-06 80 views
3

我試圖從數據庫得到的結果,但結果限制在右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

回答

6

如果這就是你想要的,使用子查詢只得到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