Especie con una opción forzada al principio de la lista
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?
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.