2011-12-14 21 views
8

Tengo una tabla como la siguiente,consulta SQL ordenados alfabéticamente

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

Lo que yo quiero es una sola consulta SQL, ordenados alfabéticamente, sino que tenga 'Otros' (ID 5) como el último registro. ¿Eso es posible?

Cualquier ayuda sería muy apreciada. Gracias.

Respuesta

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

Esto funciona y es más flexible. Gracias Joe. – MadushM

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

¿No crees que sería más recomendable filtrar por ID? – syneptody

+3

@syneptody: No particularmente. ¿Por qué piensas eso? Personalmente, no soy un gran admirador de los números mágicos en el código fuente a menos que haya una razón muy convincente. Si quieres una mejora en el rendimiento, puedes buscar el ID de la fila con la descripción "Otros" y usar eso, pero dado que solo hay 6 filas, me parece excesivo (¡y tal vez incluso sea más lento!). De todos modos, el PO realmente no proporcionó tanta información sobre sus necesidades específicas, por lo que es bastante difícil decir qué es lo mejor. –

+2

Sin duda, una llamada caso por caso, pero en general 1) Hay una mayor probabilidad de que la ID se cubra en un índice 2) Hay una mayor probabilidad de que la Descripción cambie antes de que ID lo haga y 3) Si usa la ID (en este caso) puede cambiar el valor que desea mostrar el último sin tocar la consulta (simplemente actualice la descripción donde ID = 5) – syneptody