在sql查询中使用LIMIT和ORDER BY与LEFT JOIN

时间:2013-01-14 13:22:03

标签: php mysql sql join sql-order-by

我对JOIN有些陌生,我发现很难理解如何使用ORDER BYLIMIT查询一个表并仅使用ORDER BY在我JOINED'右'的桌子上,我认为是吗?所以基本上如果我要分别查询这两个表,我会使用这些查询:

SELECT * FROM posts ORDER BY dateSubmitted DESC LIMIT ?,5 

'?'代表我bind_param(),因为我正在创作一个分页。现在我的'右'第二桌:

SELECT * FROM postcomments WHERE postcomments.postID = posts.ID ORDER BY dateSubmitted DESC

据我理解,将两个表“链接”在一起我希望使用LEFT JOIN,以便从“左”表(作为帖子)接收我的所有数据。

SELECT * FROM posts LEFT JOIN postcomments ON postcomments.postID = posts.ID

现在我可以做到这一点,但我不确定除了我的ORDER BYLIMIT之外我会去哪里? 我已经看到了几种不同的方式,我认为这让我感到困惑,就像我看到的那样:

SELECT p.* FROM posts p ORDER BY posts.dateSubmitted DESC LIMIT ?,5 
LEFT JOIN (SELECT * FROM postcomments 
WHERE postscomments.postID = p.ID ORDER BY postcomments.dateSubmitted);

但我真的不确定如何构建我的查询:S任何帮助赞赏:)

1 个答案:

答案 0 :(得分:2)

最后会像这样:

Select * from
(SELECT * FROM posts  ORDER BY dateSubmitted DESC LIMIT ?,5) as tempPost
LEFT JOIN postcomments on (postscomments.postID = tempPost.ID)