dostat na nejbližší výsledku ve IFNULL

hlasů
0

Mám scénář pro údržbu, který vypisuje spoustu dat z jednoho do druhého db.

Snažím se získat data jako

  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

To, co jsem se snaží dostat se rank2 o aktuálním řádku, je nejbližší rank2 kde rank1 není null. Dělám předpoklad, že rank1 je efektivní náhradou za rank2

Takže věřím, že mám dva problémy.

  1. Nemyslím si, že jsem rank2 které mají být použity v vnořené SELECT
  2. Nevím, jak se řekne ‚dostat nejblíže rank2<rank2k proudu.

Hodnoty, které mám k rozsahu Rank1 z 0-20,000 a rank2 pohybuje od 0-150,000 (není jistý, proč by na tom). Není efektivní korelace mezi řadami.

Rank1 je vždy spolehlivější postava, často je však nulová, takže se snažím Popletal na svou objednávku s tímto typem náhradu.

Zde je trochu ukázkových dat použít jako příklad

id rank1 rank2
1 120000 14000
2 120000 18420
3 126000 15500
4 85000 NULL
5 75000 16000
6 70.000 15.700
7 68000 NULL
8 42000 NULL
9 26000 NULL
10 21,500 8,000

Doufám vrátit pořadí 2,5,4,6,7,3,1,8,9,10. nebo něco blízko k tomu. V podstatě, když mám NULL rank2 dostat na nejbližší rank2 pro nejbližší rank1.

Neočekávám, že se to být ‚dokonalý‘, ale je to lepší než jen třídění na rank1.

Položena 27/08/2009 v 03:56
zdroj uživatelem
V jiných jazycích...                            


1 odpovědí

hlasů
0

Nejsem si 100% jistý, co se ptáte. By COALESCE (rank1, rank2, rankX) v případě, že by se vrátil na první nenulovou hodnotu práci za vás?

Odpovězeno 27/08/2009 v 04:17
zdroj uživatelem

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