2010-01-28 6 views
4

나는 이것이 충분히 간단 할 것이라고 생각했지만, 나는 그 주위에서 머리를 얻을 수 없다.MySQL은 가장 가까운 일치하는 행을 찾습니다.

두 개의 열이있는 매핑/찾아보기 테이블이 있습니다. Col1은 Col2에서 값을 검색하는 데 사용됩니다.

Col1은 숫자가 20부터 시작하여 500에서 시작하는 순차 INT 열입니다. 따라서 500, 520, 540 등과 같은 값을 갖습니다. 이러한 각 값은 Col2의 고유 십진수 값에 매핑됩니다.

이제 질의를 실행할 때 Col1에 대한 값이 20 씩 증가하지 않습니다. 따라서 Col2에서 524.25와 같은 값에 대한 매핑을 찾으라는 메시지가 표시됩니다. 이 경우 520에 대해 Col1의 값과 일치해야하며 Col2에서 일치하는 10 진수 값을 반환해야합니다. 이 값이 530 이상이면 540과 일치해야합니다.

희망적입니다. 미리 감사드립니다.

크람 고얄

답변

8

먼저 (가장 일치하는 행에 대한 가장 낮은 것)의 차이의 절대 값하여 행을 정렬 한 다음 첫 번째 행의 Col2을 할 수 있어야한다.

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

브릴리언트. 감사! –

관련 문제