2014-03-25 37 views
0

让这成为我的表:SQL大于但至少

id timestamp 
1  100 
2  102 
3  102 
4  104 

我想查询SQLite的记录与时间戳大于100停止当我找到一个,但与该值返回所有。

所以在时间戳> 100:2和3(时间戳102)的情况下。未4,因为是104(> 102)

回答

0
SELECT * FROM tbl 
WHERE timestamp = (
SELECT min(timestamp) 
    FROM tbl 
WHERE timestamp > 100 
) 

Here's a SQLFiddle看到动作上面的代码,并证明它的工作原理。

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语句来确定要搜索的内容时间戳值。

我怀疑第一个版本,虽然写得稍微复杂一点,但在某些索引情况下会表现得更好,因为理论上它可以只检查一行来获取该时间戳值。

+0

非常感谢您! – Matteo

0

这应该工作:

select * from mytable where timestamp = 
( -- second least timestamp 
    select min(timestamp) from mytable where timestamp > 
    (-- least timestamp 
    select min(timestamp) from mytable 
) 
);