2013-07-04 52 views
2

我有我的應用程序SQLite數據庫中查找最接近的值,它是設置這樣的:安卓:SQLite的:從表中

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

我想有一個代碼,就爲數值1列搜索與輸入 的最接近的值,並返回Value2列中同一行的值。

實施例:

我有一個變量x = 15.12,代碼應該搜索有關值1(14.62)最接近的值,並從值2返回各自的值(20)

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

我該如何做到這一點? 非常感謝。

回答

1

你可以嘗試一個原始查詢:

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

這裏arg是輸入值。

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");