我有'發佈'和'評論'表。我想選擇最後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個帖子和對該帖子的所有評論。我可以使用兩個單獨的語句: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.
可以將這些查詢合併爲一個?
您可以使用子查詢了一套崗位:
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;
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
這不起作用。無論如何,我們總是隻有3條記錄。 –
你也可以試試這個
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
作品。您的代碼導致我出現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和問題消失了。完美的作品。 –
作品,沒有任何問題。 –