2012-04-16 11 views
5

Questo dovrebbe essere facile, ma sto avendo un momento. Perché ORDER BY con LIKE ordina i risultati corrispondenti come valore superiore rispetto alla non corrispondenza? Per ottenere i risultati che mi aspetto che devo mescolare ASC e DESC su quello che altrimenti gli stessi dati:Ordina per: restituire unLIKE prima di LIKE?

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

risposta

8

"x" come 'm%' è FALSE; "corteo" come "m%" è VERO; "FALSE" < "TRUE".

+0

_M_ agnificante, grazie. – Sam

0

è possibile utilizzare union per questo ...

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 

si darà seguito ai sensi la vostra esigenza .. :)


aggiunto asc in seconda unione query di selezione ... solo per dichiarazione più comprensibile ... senza questo (aSC) risultato anche di query dovrebbe dare desiderato ..