【问题标题】:using LIMIT and ORDER BY with LEFT JOIN in sql query在 sql 查询中使用 LIMIT 和 ORDER BY 和 LEFT JOIN
【发布时间】:2013-01-14 13:22:03
【问题描述】:

我对@9​​87654321@ 有点陌生,我发现很难理解如何使用ORDER BYLIMIT 查询一个表,并且在我的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 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 任何帮助表示赞赏:)

【问题讨论】:

  • 你能解释一下在一个场景的帮助下限制“两个”表背后的想法吗?
  • 桌帖只有一个限制。 postcmets 表为ORDERED 但不限于此。因为我想创建一个分页,所以只有帖子表是有限的。比如 0 到 5,然后是 5 到 10 等等。

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


【解决方案1】:

最后会是这样:

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

【讨论】:

  • 现在我想到了,但这限制了JOINed 表的结果以及左表。
  • 使用多个订单 by posts.dateSubmitted , postcomments.dateSubmitted
猜你喜欢
  • 1970-01-01
  • 2014-09-27
  • 2019-04-25
  • 1970-01-01
  • 2014-10-08
  • 2013-02-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多