将所有结果分组为无限滚动

时间:2017-05-27 00:40:37

标签: php sql mysqli group-by

我有一篇关于帖子功能的最新评论..所以当帖子被评论时,它会跳到顶部。 我想知道如何通过他们的streamitem_id.in在初始呼叫中对所有帖子进行分组,但在之后的每个呼叫中​​。所以,如果一个帖子在第四卷中与第二卷中的一个匹配,我希望它不显示,因为我更喜欢将它组合在一起

我在下面的查询中尝试了GROUP by方法,它只是在每个新滚动中对项目进行了分组,因为它正在进行新的调用。

ArrayList<Object> list = ...
Predicate myFilter = ...
Observable<Object> observable = Observable.fromIterable(list);
Observable.sequenceEqual(observable, observable.filter(myFilter))
    .subscribe(new Consumer<Boolean>() {
        @Override
        public void accept(@NonNull Boolean changed) throws Exception {
            // result here
        }
    });

UPDATE 我已经尝试了以下内容并且越来越接近我需要的东西了。它将这些物品分组。但现在它扔在一个随机的帖子中,甚至不应该在那里。          $query = "SELECT * FROM streamdata m JOIN streamdata_comments t1 WHERE"; if ($last_id!==0) { $query .= " t1.comment_id < $last_id AND"; } $query .= " t1.comment_streamitem=m.streamitem_id GROUP BY m.streamitem_id ORDER BY t1.comment_id DESC LIMIT 2"; $result = mysqli_query($mysqli, $query) or die('Error: ' . mysqli_error($mysqli));

1 个答案:

答案 0 :(得分:0)

如果ID“2342”是第三个结果的ID而“2222”是第二个结果的ID,那么听起来您的ID不是递增值或者您的sort子句有问题。最新评论应该是最高价值。我将确保您的查询以“t1.comment_id”值的降序返回结果。如果ID实际上不是递增值,或者sort子句无效,则该行无效。

$query .= " t1.comment_id < $last_id AND";

如果以上内容没有得到进一步验证,那么$ last_id实际上是以前的ID,所以在第二个请求中,$ last_id在当前查询中应该是'2222'。< / p>

另一种可能我错了,但JOIN的这一行可能在错误的地方,似乎它是WHERE子句的一部分。也许在JOIN之后将其移动可能会有所帮助:

$query .= " t1.comment_streamitem=m.streamitem_id

如果这些都不占优势,我会建议提供有关设计的更多信息,或者可能是转发查询和响应。