我试图理解如何将每个"post_id“的结果限制为5行。例如,我正在执行以下查询:
$posts_id = array('1','2','3','4');
$query = "SELECT * FROM comments WHERE IN post_id, $posts_id LIMIT 5";如果我喜欢的话,它只限制了所有评论的5个结果。我希望为每个帖子获得最多5个结果,而不需要急切地加载,并将查询放在一个前端。
有什么想法吗?
发布于 2013-12-26 12:58:41
您对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));发布于 2013-12-26 13:01:50
尝试这个查询
$query = "SELECT * FROM comments WHERE post_id IN('1','2','3','4') LIMIT 0, 5";发布于 2013-12-26 13:02:47
这是您应该在字符串中生成的查询,如果我正确地解释您的问题:
从注释中选择post_id IN ( 1,2,3,4)中的前5位
https://stackoverflow.com/questions/20785254
复制相似问题