Como orderan desendente con un valor diferente al inicio de la lista...

29/09/2006 - 00:28 por Daniel G. Samborski | Informe spam
Hola, en un grupo alguien pregunto como podria ordenar una lista, pero que
siempre estuviera encima un nombre.

Por ejemplo:

e
d
a
b
c
f

Lo que preguntaba era como ordenar esta lista pero, por ejemplo, con el 'b'
arriba y luego todo ordenado.

b
a
c
d
e
f

Alguien le respondio con este ejemplo.

select * from tabla a where col != 'b'
order by col
union
select * from tabla a where col = 'b'

El tema es que cuando lo quiero probar me da un error, aparentemente no se
puede poner un order antes del union y, si lo coloco al final.

select * from tabla a where col != 'b'
union
select * from tabla a where col = 'b'
order by col


Es como si realizara un simple order by sin union.

select * from tabla
order by col



Como se puede hacer que esto funciones, la verdad que me intereso...



Daniel.

Preguntas similare

Leer las respuestas

#11 Ricardo Passians
29/09/2006 - 16:40 | Informe spam
Pero ojo, no se debe abusar de usar expresiones en el order by para tablas
voluminosas debido a que puede afectar el uso eficiente de los índices.


"Pedro Echavarria" wrote in message
news:
Yo tampoco conocia que el order by permitia eso.
Quien sabe cuantas veces me rompi la cabeza con algun query que se
resolveria facilmente con ese truco :(
Es lo bueno de los foros que uno aprende a diario muchas cosas.

Pedro


"Daniel G. Samborski" wrote in
message news:
Nadie lo dice...eso no lo concia, muy interesante.
Funciona muy bien.


Gracias.


Daniel.

"Ricardo Passians" escribió en el mensaje
news:%

Y quien dice que en el order by no se puede poner una expresion ?

ejemplo:

select * from tabla a order by (case when col='b' then '' else col end)


Ricardo Passians


"Daniel G. Samborski" wrote in
message news:
Hola, en un grupo alguien pregunto como podria ordenar una lista, pero
que siempre estuviera encima un nombre.

Por ejemplo:

e
d
a
b
c
f

Lo que preguntaba era como ordenar esta lista pero, por ejemplo, con el
'b' arriba y luego todo ordenado.

b
a
c
d
e
f

Alguien le respondio con este ejemplo.

select * from tabla a where col != 'b'
order by col
union
select * from tabla a where col = 'b'

El tema es que cuando lo quiero probar me da un error, aparentemente no
se puede poner un order antes del union y, si lo coloco al final.

select * from tabla a where col != 'b'
union
select * from tabla a where col = 'b'
order by col


Es como si realizara un simple order by sin union.

select * from tabla
order by col



Como se puede hacer que esto funciones, la verdad que me intereso...



Daniel.














email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida