obter resultado mais próximo dentro IFNULL

votos
0

Eu tenho um script de manutenção que despeja um monte de dados de um db para outro.

Eu estou tentando obter os dados como

  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

O que eu estou tentando obter com o rank2 da linha atual, é o rank2 mais próximo onde rank1 não é nulo. Eu estou fazendo a suposição de que rank1 é um substituto eficaz para rank2

Então, eu acredito que eu tenho dois problemas.

  1. Eu não acho que eu rank2 para ser usado na instrução select aninhada
  2. Eu não sei como dizer 'ficar mais próximo rank2<rank2ao atual.

Os valores que tenho para gama Rank1 de 0-20,000 e intervalos rank2 de 0-150,000 (não sei por que isso importa). Não há uma correlação efetiva entre as fileiras.

Rank1 é sempre uma figura mais confiável, mas muitas vezes é nulo, então eu estou tentando falsificar a minha encomenda com este tipo de um substituto.

Aqui está um pouco de dados de amostra para usar como exemplo

id rank1 rank2
1 120000 14000
2 120,000 18,420
3 126.000 15.500
4 85000 NULL
5 75.000 16.000
6 70.000 15.700
7 68000 NULL
8 42000 NULL
9 26.000 NULL
10 21.500 8.000

Eu espero voltar uma ordem de 2,5,4,6,7,3,1,8,9,10. Ou alguma coisa parecida. Basicamente, quando eu tenho um nulo para rank2 obter o rank2 mais próximo para o rank1 mais próximo.

Eu não espero que este seja 'perfeito', mas melhor do que apenas a classificação em rank1.

Publicado 27/08/2009 em 03:56
fonte usuário
Em outras línguas...                            


1 respostas

votos
0

Não estou 100% de certeza que você está pedindo. Se aglutinem (rank1, rank2, rankX) onde ele iria retornar o primeiro trabalho de valor não nulo para você?

Respondeu 27/08/2009 em 04:17
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more