MySQL子查询LIMIT

16

正如标题所述,我想要解决这个问题的方法...

SELECT 
  comments.comment_id,
  comments.content_id,
  comments.user_id,
  comments.`comment`,
  comments.comment_time,
  NULL
FROM
  comments
WHERE
  (comments.content_id IN (SELECT content.content_id FROM content WHERE content.user_id = 1 LIMIT 0, 10))

干杯

1个回答

18
SELECT  comments.comment_id,
        comments.content_id,
        comments.user_id,
        comments.`comment`,
        comments.comment_time,
        NULL
FROM    (
        SELECT  content.content_id
        FROM    content
        WHERE   content.user_id = 1
        LIMIT 10
        ) q
JOIN    comments
ON      comments.content_id = q.content_id
你可能需要在嵌套查询中添加一个 ORDER BY

1
非常感谢这个。还有一个问题,有没有办法将评论限制为每个content_id只有2个? - Atif
@atif089:是的,请看这篇文章:http://explainextended.com/2009/03/06/advanced-row-sampling/ - Quassnoi
谢谢提供链接。这个会不会太重了?因为我要在一个自定义的社交网络网站上使用它。 - Atif
我的意思是这是为一个社交网络网站设计的,而且我在一个共享服务器上。那么它会使用很多 CPU 吗? - Atif
@atif:如果进行适当的索引,这将非常高效。 - Quassnoi
@Quassoni 这是在过去几年中多次提出同样问题的其他帖子中最容易理解的答案。 - Sunny

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,