我在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
并退出12
,20
和22
。我希望根据VAL
确定邻居。 val中的数字可能出现多次。
我该怎么做?
答案 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
。