我试图了解如何将每个“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中。
有什么想法吗?
答案 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)”