obtenir résultat le plus proche dans IFNULL

voix
0

J'ai un script de maintenance qui décharge un tas de données d'un db à l'autre.

Je suis en train d'obtenir les données que

  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

Ce que je vais tenter d'obtenir la Rank2 de la ligne actuelle, est le plus proche Rank2 où Rang1 n'est pas nul. Je fais l'hypothèse que Rang1 est un remplacement efficace pour Rank2

Donc, je crois avoir deux problèmes.

  1. Je ne pense pas que je Rank2 à utiliser dans l'instruction select imbriquée
  2. Je ne sais pas comment dire « obtenir le plus proche rank2<rank2de courant.

Les valeurs que j'ai pour la gamme Rang1 de 0-20,000, et les gammes de Rank2 0-150,000 (ne sais pas pourquoi ce serait la matière). Il n'y a pas une corrélation efficace entre les rangs.

Rang1 est toujours un chiffre plus fiable, mais elle est souvent nulle, donc je suis en train de truquer la ma commande avec ce type de remplacement.

Voici un peu de données d'échantillon à utiliser comme un exemple

id Rang1 Rank2
1 120 000 14 000
2 120 000 18420
3 126000 15500
4 85000 NULL
5 75000 16 000
6 70000 15700
7 68000 NULL
8 42000 NULL
9 26000 NULL
10 21500 8000

J'espère récupérer un ordre de 2,5,4,6,7,3,1,8,9,10. Ou quelque chose proche de cela. En fait, quand j'ai une valeur nulle pour Rank2 obtenir le Rank2 le plus proche pour le plus proche Rang1.

Je ne pense pas que ce soit « parfait », mais mieux qu'un simple tri sur Rang1.

Créé 27/08/2009 à 03:56
source utilisateur
Dans d'autres langues...                            


1 réponses

voix
0

Je ne suis pas 100% sûr de ce que vous demandez. COALESCE serait (Rang1, Rank2, rankX) où il retournerait le premier travail de valeur non nulle pour vous?

Créé 27/08/2009 à 04:17
source utilisateur

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