当前位置:  开发笔记 > 后端 > 正文

SQL:选择"直到"

如何解决《SQL:选择"直到"》经验,为你挑选了1个好方法。

我正在寻找一种方法来选择,直到达到一笔金额.

我的"文档"表有" tag_id"和" size"字段.

我想选择所有文件,tag_id = 26但我知道我只能处理600个单位的尺寸.因此,当我知道前10个文件已经累计超过600个单位时,选择100个文件并丢弃其中的90个文件毫无意义.

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

...但我也非常希望避免在此应用中使用游标.

我正在使用mysql.



1> Joel Coehoor..:

在添加到最大单位时,您需要某种方式来订购哪些记录优先于其他记录.否则,您如何知道哪些记录总计达到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值的记录可以在这里和那里进行"双重计数".

编辑
更新,因为他添加了按日期排序的信息.

推荐阅读
喜生-Da
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有