2012-04-16 9 views
5

Esto debería ser fácil, pero estoy teniendo un momento. ¿Por qué ORDER BY con LIKE ordena los resultados coincidentes como un valor más alto que los que no coinciden? Para obtener los resultados que espero que tengo que mezclar ASC y DESC en lo que es lo contrario los mismos datos:Ordenar por: ¿Desea volver antes de LIKE?

create table foo (name text); 
select name from foo order by name like 'm%' desc, name; 

Respuesta

8

"x" como 'm%' es FALSO; "caravana" como 'm%' es VERDADERO; "FALSE" < "VERDADERO".

+0

_M_ agnificant, gracias. – Sam

0

se puede utilizar para este union ...

select name from foo where name like 'm%' 
order by name desc 
union all 
select name from foo where name not like 'm%' 
order by name asc 

va a dar resultado como por su requerimiento .. :)


añadió asc en la segunda consulta de selección unión ... sólo para la declaración más comprensible ... sin esta (ASC) resultado también consulta debe dar deseada ..