让这成为我的桌子:
id timestamp
1 100
2 102
3 102
4 104
我想查询SQLite时间戳大于100的记录,当我找到一个但是全部返回该值时停止。
所以在时间戳的情况下> 100:2和3(时间戳102)。不是4因为是104(> 102)
答案 0 :(得分:1)
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
语句来确定您要搜索的时间戳值。
我怀疑第一个版本虽然编写起来有点复杂,但在某些索引情况下会表现得更好,因为理论上它只能检查一行来获取该时间戳值。
答案 1 :(得分:0)
SELECT * FROM tbl
WHERE timestamp = (
SELECT min(timestamp)
FROM tbl
WHERE timestamp > 100
)
Here's a SQLFiddle查看上面的代码,并证明其有效。
答案 2 :(得分:0)
这应该有效:
select * from mytable where timestamp =
( -- second least timestamp
select min(timestamp) from mytable where timestamp >
( -- least timestamp
select min(timestamp) from mytable
)
);