2011-12-14 20 views
8

Ho una tabella come di seguito,elencate in ordine alfabetico

ID Description 
-------------------- 
1  Bacteria 
2  Cell Lines 
3  Compounds 
4  Virus 
5  Others 
6  AntiBody 

Quello che voglio è una singola query SQL, elencate in ordine alfabetico ma hanno 'Altro' (ID 5) come l'ultimo record. È possibile?

Qualsiasi aiuto sarebbe molto apprezzato. Grazie.

risposta

10
SELECT ID, Description 
    FROM YourTable 
    ORDER BY CASE WHEN ID = 5 THEN 1 ELSE 0 END, 
      Description 
+0

Questo funziona ed è più flessibile. Grazie Joe. – MadushM

10
SELECT ID, Description 
FROM yourtable 
ORDER BY CASE WHEN Description = 'Others' THEN 1 ELSE 0 END, Description 
+0

Non pensi che sarebbe più opportuno filtrare su ID? – syneptody

+3

@syneptody: non particolarmente. Perchè la pensi così? Personalmente non sono un grande fan dei numeri magici nel codice sorgente a meno che non ci sia un motivo molto convincente. Se si desidera un miglioramento delle prestazioni, è possibile recuperare l'ID della riga con la descrizione "Altri" e utilizzarlo, ma dato che ci sono solo 6 righe, mi sembra eccessivo (e forse sarebbe anche più lento!). Ad ogni modo, l'OP non ha fornito molte informazioni sulle sue esigenze specifiche, quindi è piuttosto difficile dire cosa è meglio. –

+2

Sicuramente una chiamata caso per caso, ma in generale 1) C'è una maggiore probabilità che l'ID venga coperto in un indice 2) C'è una maggiore probabilità che la Descrizione cambierà prima dell'ID e 3) Se si utilizza ID (in in questo caso) è possibile modificare il valore che si desidera visualizzare per ultimo senza toccare la query (basta aggiornare la descrizione dove ID = 5) – syneptody

Problemi correlati