让这成为我的表:SQL大于但至少
id timestamp
1 100
2 102
3 102
4 104
我想查询SQLite的记录与时间戳大于100停止当我找到一个,但与该值返回所有。
所以在时间戳> 100:2和3(时间戳102)的情况下。未4,因为是104(> 102)
让这成为我的表:SQL大于但至少
id timestamp
1 100
2 102
3 102
4 104
我想查询SQLite的记录与时间戳大于100停止当我找到一个,但与该值返回所有。
所以在时间戳> 100:2和3(时间戳102)的情况下。未4,因为是104(> 102)
SELECT * FROM tbl
WHERE timestamp = (
SELECT min(timestamp)
FROM tbl
WHERE timestamp > 100
)
Here's a SQLFiddle看到动作上面的代码,并证明它的工作原理。
SELECT * FROM your_table WHERE timestamp =
(SELECT timestamp FROM your_table
WHERE timestamp > 100 ORDER BY timestamp LIMIT 1);
或
SELECT * FROM your_table WHERE timestamp =
(SELECT MIN(timestamp) FROM your_table WHERE timestamp > 100)
在这两种情况下,你使用的是内部SELECT
语句来确定要搜索的内容时间戳值。
我怀疑第一个版本,虽然写得稍微复杂一点,但在某些索引情况下会表现得更好,因为理论上它可以只检查一行来获取该时间戳值。
这应该工作:
select * from mytable where timestamp =
( -- second least timestamp
select min(timestamp) from mytable where timestamp >
(-- least timestamp
select min(timestamp) from mytable
)
);
非常感谢您! – Matteo