2012-04-16 17 views
5

Bu kolay olmalı, ama biraz zaman geçiriyorum. ORDER BY LIKE, neden eşleşmeyen sonuçları eşleşmeden daha yüksek bir değer olarak sıralar? o uyarınca sonuç verecektirtarafından Sipariş Gibi: LIKE önce unLIKE döndürüyor?

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 

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

cevap

8

"x" gibi "m%" FALSE; "m%" gibi "motorcade", TRUE; "FALSE" < "TRUE".

+0

_M_ agnificant, teşekkürler. – Sam

0

Bunun için union kullanabilirsiniz ...: Ben başka türlü aynı veri ne olduğuna ASC ve DESC karıştırmak zorunda bekliyoruz sonuçları almak için İhtiyaçlarınız .. :)


..

012 sadece bu (ASC) olmadan daha anlaşılır açıklamada ... ayrıca sorgu istenen vermeleri sonucu için ... ikinci sendika seçme sorguda asc eklendi
İlgili konular