SQL大于但至少

时间:2014-03-25 14:41:58

标签: sql sqlite

让这成为我的桌子:

id    timestamp
1     100
2     102
3     102
4     104

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

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

3 个答案:

答案 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
  )
);