0

我需要使用 LIMIT 来返回 5 条记录,每次调用函数时都会增加一个偏移量,但我想使用 Fuzzy LIMIT。

这个模糊的 LIMIT 应该受到一个 A 列的影响,整个查询按 A 列升序排序。

这意味着,尽管 LIMIT 为 5,但如果要在 Col A 中遇到多个 SAME VALUE 实例,它应该暂时增加 LIMIT 以包含所有记录,直到该相同值结束。

它还应该返回某种指针,表示 LIMIT 暂时增加了这么多,因此可以相应地发送下一个 OFFSET。

在下面的示例中,如果 LIMIT 落在第 5 条记录上,则它应该包括所有直到第 7 条记录。(因为 3 与 7 号之前的值相同。)

Col A

1

2

3

3

3

3

3

4

5

6

我们如何才能创建这样的 LIMIT?如果有人可以为我创建查询,我将非常感激,因为我是 MySQL 新手。

我目前有正常的查询:

select table1.colA, table1.colB, table1.colC, table1.colD, table2.colD, table2.colE from table1 INNER JOIN table2 on table1.colD = table2.colD ORDER BY table1.colA ASC
4

1 回答 1

0

在 MySQL 中,您可以这样做:

select colA
from t cross join
     (select max(colA) as maxcolA
      from (select colA
            from t
            order by colA
            limit 5
           ) t
      ) const
where colA <= maxColA
order by colA

也就是说,找到第 5 行的值,然后在比较中使用该值。

在大多数其他数据库中,您可以更简单地将其表述为:

select colA
from t
where colA in (select colA from t order by colA limit 5)
order by colA

但是,MySQL 不允许对子句中使用的子查询进行限制in

于 2013-06-07T16:26:33.637 回答