所以我有点困惑,我有一个这样的表设置
+-----------+------+ | Timestamp | Size | +-----------+------+ | 1-1-13 + 10.3 + +-----------+------+ | 1-3-13 + 6.7 + +-----------+------+ | 1-5-13 + 3.0 + +-----------+------+ | 1-9-13 + 11.4 + +-----------+------+
我想知道是否有任何方式可以运行这样的查询
SELECT * FROM table ORDER BY timestamp ASC LIMIT BY (SUM(size) <= 20.0);
这应该抓住前三行,因为前三行的in的总和为20。但是,它可能并不总是等于20的三行。有时第一行的值可能为20,在那在这种情况下,它应该只抓住第一个。
我已经知道,可以在运行查询后在PHP中快速计算总和,但是我正在尝试仅使用MySQL来实现。
您想要添加一个运行总计,并基于此限制,以下应该起作用:
SET @runtot:=0; SELECT q1.t, q1.s, (@runtot := @runtot + q1.s) AS rt FROM (SELECT Date AS t, SIZE AS s FROM Table1 ORDER BY Date ) AS q1 WHERE @runtot + q1.s <= 20
编辑:这里的演示-SQL Fiddle