Php Mysql左联接:限制父表
我正在尝试从DB获取结果,但将结果限制在右侧Php Mysql左联接:限制父表,php,mysql,sql,join,Php,Mysql,Sql,Join,我正在尝试从DB获取结果,但将结果限制在右侧 SELECT posts.text, comments.text FROM posts LEFT JOIN comments ON comments.postid= post.id Limit 0,5 如果有五条评论,上面将返回第一篇文章的五条评论。但是我想返回所有评论,但是在5篇文章之后停止查询。我该怎么办 对不起,我的问题一开始有点不清楚,因为我把左连接写错了 这就是我问题的解决方案: SELECT posts.text, comme
SELECT posts.text, comments.text
FROM posts
LEFT JOIN comments ON comments.postid= post.id
Limit 0,5
如果有五条评论,上面将返回第一篇文章的五条评论。但是我想返回所有评论,但是在5篇文章之后停止查询。我该怎么办
对不起,我的问题一开始有点不清楚,因为我把左连接写错了 这就是我问题的解决方案:
SELECT posts.text, comments.text
FROM ( SELECT * FROM posts Limit 0,5 )
LEFT JOIN comments ON comments.postid= post.id
还有一个问题。我只将posts.text指定为select列,但所有列现在是否都将返回为子查询中包含的“*”?如果这是您想要的,请使用子查询仅获取5个父项
SELECT p.text PostText,
c.text CommentText
FROM
(
SELECT id, text
FROM posts
LIMIT 5
) p
LEFT JOIN comments c
ON c.postId = p.id;
我很困惑。一篇文章只能有一条评论,还是应该是
post.id=comment.postId
?对不起,是的,你是对的,根据我的经验,MySQL中的子查询可能比expected@cja总有例外。但如果不使用子查询,您如何解决这个问题?@cja它不是一个相关子查询,因此只执行一次。性能应该是不错的,尽管我怀疑这个问题对于实际的表关系有点混淆。如果您有一个ORDER BY
,这将不起作用。它将仅在子查询的结果中排序。如果您想按最新评论订购。