3

我的应用程序上有一个 SQLite 数据库,它的设置如下:

id Value1  Value2
1   12.51    10
2   14.62    20
3   18.94    30
4   21.07    40

我想要一个代码来在 Value1 列上搜索最接近输入的值,并返回 Value2 列中同一行的值。

例子:

我有一个变量 x=15.12,代码应该在 Value1 (14.62) 上搜索最接近的值,并从 Value2 (20) 返回相应的值

或者至少给我最接近值的行。

我怎样才能做到这一点?非常感谢。

4

2 回答 2

2

计算差值,按该值排序,然后只取第一个结果:

SELECT Value2
FROM MyTable
ORDER BY abs(Value1 - ?)
LIMIT 1

在 Android 中,这将是这样的:

cursor = db.query("MyTable", new String[] { "Value2" },
                  null, null, null, null,
                  "abs(Value1 - " + x + ")", "1");
于 2013-07-04T06:16:27.020 回答
1

您可以尝试原始查询:

SELECT * FROM table WHERE abs(Value1 - arg) = (SELECT min(abs(Value1 - arg)) FROM table)

arg是输入值。

于 2013-07-04T03:38:03.950 回答