限制结果mysql在clausule中的位置

时间:2013-12-26 12:54:47

标签: mysql

我试图了解如何将每个“post_id”的结果限制为5行。 示例我正在执行此查询:

$posts_id = array('1','2','3','4');
$query = "SELECT * FROM comments WHERE IN post_id, $posts_id LIMIT 5";

如果我喜欢它,它只限制所有评论的5个结果。我想为每个帖子获得最多5个结果,而不是急切加载并将查询放在foreach中。

有什么想法吗?

3 个答案:

答案 0 :(得分:1)

您对IN如何运作的理解是错误的。相反,您可以使用UNION构建查询:

//omitting escaping to concentrate on idea:
$posts_id = array('1','2','3','4');
$limit    = 5;
$query = join(' UNION ALL ', array_map(function($id) use ($limit)
{
   return '(SELECT * FROM comments WHERE post_id='.$id.' LIMIT '.$limit.')';
}, $posts_id));

答案 1 :(得分:0)

尝试此查询

$query = "SELECT * FROM comments WHERE post_id IN('1','2','3','4') LIMIT 0, 5";

答案 2 :(得分:-1)

如果我正确地解释你的问题,这是你应该在你的字符串中产生的查询:

“SELECT TOP 5 * from comments where where post_id IN(1,2,3,4)”