Android SQL在SQL列中获取项目和项目之前和之后的项目

时间:2014-09-18 08:38:58

标签: android sql android-sqlite

我在Android中有一个SQL数据库,它有一个值为:

的表
ID VAL 
1 5 
2 12 
3 8 
4 11 
5 1 
6 22 
7 20 
8 40
9 5

我想编写一个SQL查询,我放入ID 7并退出122022。我希望根据VAL确定邻居。 val中的数字可能出现多次。 我该怎么做?

1 个答案:

答案 0 :(得分:1)

您可以尝试以下操作:

WITH yourvalue AS
(
  SELECT val FROM t WHERE id = 7
),
downvalue AS
(
  SELECT val 
  FROM t 
  WHERE val < (SELECT val FROM yourvalue)
  ORDER BY val DESC
  OFFSET 0 ROWS
  FETCH FIRST 1 ROWS ONLY
),
upvalue AS
(
  SELECT val 
  FROM t 
  WHERE val > (SELECT val FROM yourvalue)
  ORDER BY val
  OFFSET 0 ROWS
  FETCH FIRST 1 ROWS ONLY
)
select * from yourvalue
UNION
select * from downvalue
UNION
select * from upvalue


输出为:12,20,22

我只能使用MS SQL Server 2012进行测试。我认为这是ANSI SQL,但似乎SQLite不喜欢语法OFFSET / FETCH。因此,您可以尝试从OFFSET 0 ROWS FETCH FIRST 1 ROWS ONLY更改为LIMIT 1 OFFSET 0