2010-01-28 108 views
4

我認爲這將是很簡單,但我不能讓我的頭周圍。MySQL的找到最近的匹配行

我有兩列映射/查找表。 Col1用於從Col2查找值。

Col1中是與它的值增加20的計數,並從500開頭,所以,它具有像500,520,540等值的直INT列。這些值中的每一個都映射到Col2中的唯一十進制值。

現在,當我運行查詢,我得到Col1中不在的20。因此增量價值,我會被要求找到col2的映射像524.25的值。在這種情況下,它應該將Col1中的值與520匹配,並從Col2返回匹配的十進制值。如果這個值是530或以上,它應該匹配540等等。

希望這是有道理的。提前致謝。

維克拉姆·戈亞爾

回答

8

你應該能夠首先你行由差的絕對值(將最低的最佳匹配行)進行排序,然後坐第一排的Col2

SELECT Col2 
FROM your_table 
ORDER BY ABS(Col1 - your_value) 
LIMIT 1 
+1

輝煌。謝謝! – 2010-01-28 23:16:34