Android:SQLite:从表中查找最接近的值

时间:2013-07-04 03:29:04

标签: java android database sqlite closest

我的应用程序上有一个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)返回相应的值

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

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

2 个答案:

答案 0 :(得分: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");

答案 1 :(得分:1)

您可以尝试原始查询:

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

此处arg是输入值。