Pregunta

Tengo una aplicación en PHP que muestra una lista de opciones para el usuario.La lista se genera a partir de una simple consulta en SQL 2000.Lo que me gustaría hacer es tener una opción específica en la parte superior de la lista y, a continuación, tienen el resto de las opciones se ordenan alfabéticamente.

Por ejemplo, aquí las opciones si se ordenan alfabéticamente:

Calgary  
Edmonton  
Halifax  
Montreal  
Toronto  

Lo que me gustaría que la lista es más parecido a esto:

**Montreal**  
Calgary  
Edmonton  
Halifax  
Toronto  

Hay una manera que puedo hacerlo con una sola consulta?O estoy atascado ejecución de la consulta dos veces y anexar los resultados?

¿Fue útil?

Solución

SELECT name
FROM locations
ORDER BY
    CASE
        WHEN name = 'Montreal' 
        THEN 0
        ELSE 1
    END, name

Otros consejos

SELECT name FROM options ORDER BY name = "Montreal", name;

Nota:Esto funciona con MySQL, no SQL 2000, como la OP solicitado.

create table Places (
    add Name varchar(30),
    add Priority bit
)

select   Name
from     Places
order by Priority desc,
         Name

He tenido un problema similar en un sitio web que he construido completo de los informes del caso.Yo quería que los informes de casos donde la víctima se conoce el nombre de ordenar a la parte superior, debido a que son más convincentes.Por el contrario quisiera que todo el John Doe de los casos a ser en la parte inferior.Debido a que esto también participan los nombres de la gente, tenía el nombre/apellido de ordenación problema así.Yo no quería que se dividió en dos campos de nombre, porque en algunos casos no son las personas en todo.

Mi solución:

Tengo un campo "Nombre", que es lo que se muestra.También tengo un "NameSorted" campo que se utiliza en todas las consultas, pero nunca se muestra.Mi entrada de interfaz de usuario se ocupa de la conversión de "apellido, nombre" entró en el campo de clasificación en la pantalla de la versión automática.

Finalmente, a la "plataforma" de la clasificación pongo simplemente de caracteres apropiado en el principio de la ordenación de campo.Desde que me quiero cosas para salir al final, puse "zzz" en el principio.Para ordenar en la parte superior se podría poner "!" en el principio.De nuevo su edición de interfaz de usuario puede encargarse de esto para usted.

Sí, admito que es un poco cheezy, pero funciona.Una ventaja para mí es que tengo que hacer consultas más complejas con combinaciones en diferentes lugares para generar páginas versus RSS, etc, y no tengo que recordar una expresión compleja para obtener la clasificación a la derecha, que siempre acaba de ordenar por el "NameSorted campo".

Haga clic en mi perfil para ver el website se derive.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top