在 sql 查询中使用 LIMIT 和 ORDER BY 和 LEFT JOIN
Posted
技术标签:
【中文标题】在 sql 查询中使用 LIMIT 和 ORDER BY 和 LEFT JOIN【英文标题】:using LIMIT and ORDER BY with LEFT JOIN in sql query 【发布时间】:2013-01-14 13:22:03 【问题描述】:我对@987654321@ 有点陌生,我发现很难理解如何使用ORDER BY
和LIMIT
查询一个表,并且在我的JOINED
上只使用ORDER BY
'对'表我认为是?所以基本上,如果我要单独查询这两个表,我会使用这些查询:
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 BY
和LIMIT
两个表我会在哪里?
我见过几种不同的方式,我认为这让我感到困惑,就像我见过这样的:
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 任何帮助表示赞赏:)
【问题讨论】:
你能解释一下在一个场景的帮助下限制“两个”表背后的想法吗? 桌帖只有一个限制。 postcmets 表为ORDERED
但不限于此。因为我想创建一个分页,所以只有帖子表是有限的。比如 0 到 5,然后是 5 到 10 等等。
【参考方案1】:
最后会是这样:
Select * from
(SELECT * FROM posts ORDER BY dateSubmitted DESC LIMIT ?,5) as tempPost
LEFT JOIN postcomments on (postscomments.postID = tempPost.ID)
【讨论】:
现在我想到了,但这限制了JOIN
ed 表的结果以及左表。
使用多个订单 by posts.dateSubmitted , postcomments.dateSubmitted
以上是关于在 sql 查询中使用 LIMIT 和 ORDER BY 和 LEFT JOIN的主要内容,如果未能解决你的问题,请参考以下文章
SQL(ORACLE):ORDER BY 和 LIMIT [重复]
SQL:使用 UNION、ORDER BY 和 LIMIT 进行选择