03. oktober 2003 - 10:08Der er
11 kommentarer og 1 løsning
Order by tal mod tomt felt
Jeg har en tabel hvor jeg ønsker et udtræk der er order by en rækkefølge jeg har angivet! Men det er ikke alle rækker der har en værdi i rækkefølgen, dvs de første 10 rækker har fx værdierne 1-10 mens resten ingen værdi har - tomt felt, NULL Når jeg laver en order by på dette så kommer alle NULL værdierne øverst - hvilket ikke er hensigten!! Jeg kan selvfølgelig pr. default tildele rækkefølgen en høj værdi i DB'en således at der fx står 10000 istedet for NULL, men det må kunne løses på en mere elegant måde... Har du svaret???
I mange SQL-er kan du teste for om en værdi er null (eksempel fra MySql):
SELECT username,dddd,if(isnull(dddd),99999,dddd) as o FROM child order by o asc
(undskyld de skøre navne...). Det jeg gør er at tage de felter ud jeg skal bruge (username, dddd) og så lave et ekstra, som alene bruges til sortering. Er det null, indsættes et megastort tal (99999), så det altid kommer nederst.
Om det virker i din database ved jeg ikke. Det kunne måske have været smart at skrive hvad du bruger.
hiks -- fedt link :o) det virker hvis jeg ændrer til: ... ORDER BY CASE WHEN Raekkefoelge IS NULL THEN 1 ELSE 0 END, Raekkefoelge
...jeg er dog lidt i tvivl om hvorvidt det er nødvendigt at lave en sorteringskolonne og et efterfølgende index som det forslås på siden du sendte link til??? Giver det nogen former for problemer blot at bygge SQL'en op med den ovenfor nævnte ORDER BY??
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.