gpt4 book ai didi

mysql - 如何根据计数定义范围查询?

转载 作者:行者123 更新时间:2023-11-30 23:27:28 27 4
gpt4 key购买 nike

我表中的元组如下所示:(值、日期、属性)。现在我想查询数据库并获得一个范围,但不是取决于日期,而是取决于“......范围内的最后 x 个条目”的计数。下面的示例将阐明:我有一个时间栏,其中所有属性为“x”的条目都按日期列排序,因此点 s 和 t 的日期小于点 0 中的日期和点 x 中的日期当然,y 比点 0 大。所有的点都有属性=“a”。

      s        t  0  x        y
------|--------|--|--|--------|------> t

现在我想获得具有以下特征的所有条目:从 s - t 和 x - y 中获取所有条目,其中 attribute="a"并以我在此范围内获得 60 个条目的方式选择 s 和 t,以5个条目分别在t和0之间以及x和y之间的方式选择t。

这是一个示例数据:

(xyz, 01.02.2000, a)
(xyz, 02.02.2000, a)
(xyz, 01.02.2000, b)
(xyz, 03.02.2000, a)
(xyz, 01.02.2000, b)
(xyz, 04.02.2000, a)
(xyz, 06.02.2000, a)
(xyz, 01.02.2000, b)
(xyz, 07.02.2000, a)
(xyz, 01.02.2000, b)
(xyz, 10.02.2000, a)
(xyz, 12.02.2000, a)

date = 06.02.2000 和范围 s-t = 3, t-0=1 的期望输出是

s = (xyz, 01.02.2000, a)
(xyz, 02.02.2000, a)
t = (xyz, 03.02.2000, a)
(xyz, 04.02.2000, a) NOT because between t and 0 should be 1 free
0 = (xyz, 06.02.2000, a)

而在另一个方向上,时间条上的“右”方向完全一样……

目前我使用两个按日期排序和限制 (5, 60) 的查询,但我猜想有更好的方法...我只是不知道这种方法 ;-)

最佳答案

我认为唯一可行的方法是在两个 LIMIT 查询之间使用 UNION,一个按升序排序,另一个按降序排序。这也是因为无法保证在两个间隔中的任何一个间隔中都存在所需的行数。

关于mysql - 如何根据计数定义范围查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12517678/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com