MySQL查询返回符合条件并受其他条件限制的表的最后一个值

时间:2015-01-26 12:29:08

标签: mysql sql

我有一个包含以下结构的表:

CREATE TABLE `range` (
  `ts` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP
  `f0` float(10,2) NOT NULL,
  `f1` float(10,2) NOT NULL,
  ...

哪些行描述了浮点数[f0-f1]的范围。该范围可以增加(即f0 < f1)或减少(即f0 > f1)。

ts排序,我正在搜索一个查询,该查询返回最后一个增加的行,直到第一个减少的行。例如,

+---------------------+------+------+
| ts                  | f0   | f1   |
+---------------------+------+------+
| ...                 | ...  | ...  |
| 2015-01-24 00:00:00 | 0.20 | 0.05 |
| 2015-01-25 00:00:00 | 0.10 | 0.20 |
| 2015-01-26 00:00:00 | 0.10 | 0.30 |
+---------------------+------+------+

查询将返回最后两行,如果是

+---------------------+------+------+
| ts                  | f0   | f1   |
+---------------------+------+------+
| ...                 | ...  | ...  |
| 2015-01-24 00:00:00 | 0.10 | 0.20 |
| 2015-01-25 00:00:00 | 0.10 | 0.30 |
| 2015-01-26 00:00:00 | 0.20 | 0.05 |
+---------------------+------+------+

它将返回0行。

有关如何根据条件限制结果的想法吗?

SELECT * FROM range WHERE f0 > f1 ORDER BY ts DESC LIMIT ???

非常感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

select *
from   range
where ts > (select max(ts)
            from range
            where f0 > f1)
order by ts