我的应用程序上有一个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)返回相应的值
或者至少给我一行最接近的值。
我怎样才能做到这一点? 非常感谢你。
答案 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
是输入值。