gpt4 book ai didi

mysql - 如何达到 "select until"和

转载 作者:可可西里 更新时间:2023-11-01 06:45:30 24 4
gpt4 key购买 nike

我正在寻找一种方法来选择直到达到总和。

我的“文档”表有“tag_id”和“size”字段。

我想选择所有带有 tag_id = 26 的文档,但我知道我只能处理 600 个单位的大小。因此,当我知道前 10 个文档已经加起来超过 600 个单元时,选择 100 个文档并丢弃其中的 90 个是没有意义的。

因此,目标是:当我要丢弃大部分数据时,不要带回大量数据进行解析。

...但我也真的很想避免在这个应用程序中引入游标。

我正在使用 MySQL。

最佳答案

您需要某种方式来确定在添加到最大单位时哪些记录优先于其他记录。否则,您怎么知道您保留了哪一组总计多达 600 条的记录?

SELECT d.id, d.size, d.date_created
FROM documents d
INNER JOIN documents d2 ON d2.tag_id=d.tag_id AND d2.date_created >= d.date_created
WHERE d.tag_id=26
GROUP BY d.id, d.size, d.date_created
HAVING sum(d2.size) <= 600
ORDER BY d.date_created DESC

这只是一个让您入门的基本查询,还有许多问题需要解决:

  • 它在 <= 600 时停止,因此在大多数情况下您不会完全填满您的大小限制。这意味着您可能想要调整它以允许多一条记录。例如,如果第一条记录大于 600,则查询将不返回任何内容,这可能是个问题。
  • 它不会做任何事来检查以后可能仍适合上限的其他较小记录。
  • 具有相同 date_created 值的记录可能会被“重复计算”。

关于mysql - 如何达到 "select until"和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/287333/

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