MySQL sort NULL columns, řazení NULL sloupců, order NULL last
Potřebujete řadit řádky podle nějakého sloupce, kde se vyskytují NULL hodnoty? NULL hodnota v tomto případě znamená, že řádek je pro účely toho řazení nepodstatný, proto ho potřebujeme řadit až nakonec.
Představte si, že řadíte podle čísla pořadí položky ve výpisu. Pak vytvoříte nějaký sloupec a jemu přiřazujete čísla od 1 do X. Do seznamu však přibývají nové položky, které nemají své místo a tak budou mít hodnotu NULL.
Např.
| Franta | 1 |
| Pepík | 2 |
| Alois | 3 |
| Bedřich | NULL |
| Jitka | NULL |
Pokud použijete tento SQL dotaz v MySQL:
- SELECT * FROM employees ORDER BY roworder;
Výsledek je tento:
| Bedřich | NULL |
| Jitka | NULL |
| Franta | 1 |
| Pepík | 2 |
| Alois | 3 |
Používám na tento problém jednoduchý trik, jak to řešíte vy?
- SELECT * FROM employees ORDER BY ISNULL(roworder), roworder ASC;
komentáře
RSS Komentáře



Jediný problém vidím v tom, že se pro řazení nepoužije index. Efektivnější by tedy nejspíš u velkých tabulek bylo:
/---sql SELECT * FROM employees WHERE roworder IS NOT NULL ORDER BY roworder; SELECT * FROM employees WHERE roworder IS NULL; \--