gpt4 book ai didi

sql - sqlite3中计算累积值的有效方法

转载 作者:行者123 更新时间:2023-12-02 14:10:02 25 4
gpt4 key购买 nike

我有一个 sqlite3 表,可以告诉我何时在游戏中获得/失去分数。示例/查询结果:

SELECT time,p2 FROM events WHERE p1='barrycarter' AND action='points' 
ORDER BY time;

1280622305|-22
1280625580|-9
1280627919|20
1280688964|21
1280694395|-11
1280698006|28
1280705461|-14
1280706788|-13
[etc]

我现在想要我的总跑分。鉴于我一开始就有 1000 分,这是一种方法。

SELECT DISTINCT(time), (SELECT 
1000+SUM(p2) FROM events e WHERE p1='barrycarter' AND action='points'
AND e.time <= e2.time) AS points FROM events e2 WHERE p1='barrycarter'
AND action='points' ORDER BY time

但是这是非常低效的。有什么更好的方法来写这个?

MySQL 有 @variables,因此你可以执行以下操作:

SELECT time, @tot := @tot+points ... 

但我使用的是 sqlite3,而且上面的内容无论如何都不是 ANSI 标准 SQL。

有关数据库的更多信息(如果有人需要的话):http://ccgames.db.94y.info/

编辑:感谢您的回答!我的困境:我让任何人都可以运行单个对“http://ccgames.db.94y.info/ ”的 SELECT 查询。我想给他们对我的数据的访问很有用,但还没有达到允许的程度编写脚本或允许多个状态查询。所以我需要一个可以做累加的SQL查询。另请参阅:
Existing solution to share database data usefully but safely?

最佳答案

SQLite 是一个小型嵌入式数据库。考虑到这个定义,我们发现它有许多局限性并不是没有道理的。手头的任务无法单独使用 SQLite 来解决,否则正如您所发现的那样,速度会非常慢。您编写的查询是一个三角形交叉连接,它无法扩展,或者更确切地说,扩展性很差。

解决问题最有效的方法是通过使用 SQLite 的程序,例如如果您在 HTML5 中使用 Web SQL,则可以轻松地在 JavaScript 中进行积累。

关于sql - sqlite3中计算累积值的有效方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5060090/

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