2017-07-31 36 views
0

我有'發佈'和'評論'表。我想選擇最後3個帖子對該帖子的所有評論。我可以使用兩個單獨的語句:LIMIT行左加入

SELECT p.* FROM post p ORDER BY p.date DESC LIMIT 3; // called 1 
SELECT c.* FROM comment c WHERE c.post_id = :id; // called 3x time for each post. 

可以將這些查詢合併爲一個?

回答

3

您可以使用子查詢了一套崗位:

SELECT p.* 
FROM (SELECT p.* 
     FROM post p 
     ORDER BY p.date DESC 
     LIMIT 3 
    ) p JOIN 
    comment c 
    ON c.post_id = p.id 
ORDER BY p.id, c.id; 
+0

作品,沒有任何問題。 –

1
SELECT POST .*, COMMENT.* 
from POST INNER JOIN COMMENT ON POST.id = COMMENT.post_id 
where POST.id = COMMENT.post_id ORDER BY POST.id LIMIT 3 
+0

這不起作用。無論如何,我們總是隻有3條記錄。 –

1

你也可以試試這個

SELECT p . * , c . * 
FROM post p 
LEFT JOIN 
COMMENT c ON c.post_id = p.id 
where p.id IN (SELECT id from post order by date desc limit 3) ORDER BY p.date 
+0

作品。您的代碼導致我出現SQL錯誤(1235):此版本的MySQL尚不支持「LIMIT&IN/ALL/ANY/SOME子查詢」。但一點搜索:https://stackoverflow.com/questions/17892762/mysql-this-version-of-mysql-doesnt-yet-support-limit-in-all-any-some-subqu和問題消失了。完美的作品。 –