나는 한 데이터베이스에서 다른 데이터베이스로 많은 데이터를 덤프하는 유지 관리 스크립트를 가지고 있습니다.IFNULL 내에서 가장 가까운 결과 얻기
내가 현재 행의 rank2로 얻을 시도하고있는 무슨
SELECT id, IFNULL(rank1,(SELECT rank2
FROM table
WHERE rank1 IS NOT NULL and
rank2<rank2 of current row
ORDER BY rank2 LIMIT 1)) FROM table
로 데이터를 얻으려고는 rank1가 null가 아닌 가장 가까운 rank2입니다. 나는 rank1이 rank2의 효과적인 교체라고 가정하고있다.
그래서 나는 두 가지 문제가 있다고 생각한다.
- 내가 내가 내가 현재에 가장 가까운
rank2<rank2
가져 오기 '를 말하는 방법을 모르는 중첩 SELECT 문- 에 사용되는 rank2 한 생각하지 않습니다. 0-150,000 범위 rank2
내가 0-20,000에서 Rank1 범위에 대해 가지고있는 값 및 (그 문제가 왜 확실하지 않다). 순위 사이에는 효과적인 상관 관계가 없습니다.
Rank1은 항상 신뢰할 수있는 그림이지만 null 인 경우가 많으므로이 유형의 대체품을 사용하여 주문을 퍼지하려고합니다. 여기
샘플 데이터의 비트가 나는 2,5,4,6,7,3,1,8,9,10의 순서 돌아갈 희망id rank1 rank2 1 120,000 14,000 2 120,000 18,420 3 126,000 15,500 4 85,000 NULL 5 75,000 16,000 6 70,000 15,700 7 68,000 NULL 8 42,000 NULL 9 26,000 NULL 10 21,500 8,000
예제로 사용하는의 . 또는 그것에 가까운 것. 기본적으로 rank2에 null이 있으면 가장 가까운 rank1에 가장 가까운 rank2를 얻습니다.
나는 이것이 '완벽'하다고는 기대하지 않지만 rank1을 정렬하는 것보다 낫습니다.
나는 그렇게 생각하지 않는다. 나는 모든 행을 얻으려고 노력하고있다. 그리고 내가 이해하는 것으로부터, COALESCE는 오직 첫 번째 non-null 값만을 줄 것이다. 가장 가까운 null이 아닌 값을 얻으려고합니다. 예제 데이터로 질문을 편집하고 있습니다. – pedalpete