2012-04-16 3 views
5

これは簡単なはずですが、私は瞬間を持っています。なぜORDER BYをLIKEで使用すると、一致しない結果よりも高い値として一致する結果がソートされますか?それがあたりのように結果が得られますオーダー:LIKEの前にunLIKEを戻しますか?

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; 

答えて

8

「x」のように「m%」は偽です。 'm%'のような "motorcade"はTRUEです。 "FALSE" < "TRUE"。

+0

_M_関心がありません、ありがとうございます。 – Sam

0

は、あなたがこのためにunionを使用することができます...:私は私がそうでなければ、同じデータであるかについてのASCとDESCをミックスする必要が期待する結果を取得するにはあなたの条件は... :)


もクエリが望ましい結果に...

012を与える必要があり、このことなく、単により理解しやすい文の第二組合選択クエリ... ...(ASC)にASCを追加しました
関連する問題