2012-04-16 28 views
5

Điều này phải dễ dàng, nhưng tôi có một chút thời gian. Tại sao ORDER BY với LIKE sắp xếp kết quả phù hợp dưới dạng giá trị cao hơn so với kết quả không phù hợp? Để có được kết quả tôi mong đợi tôi phải trộn ASC và DESC vào những gì là nếu không dữ liệu giống nhau:Đặt hàng theo: Trả lại unLIKE trước LIKE?

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

Trả lời

8

"x" như 'm%' là FALSE; "motorcade" như 'm%' là TRUE; "FALSE" < "TRUE".

+0

_M_ agnificant, cảm ơn bạn. – Sam

0

bạn có thể sử dụng union cho điều này ...

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 

nó sẽ cho kết quả theo yêu cầu của bạn .. :)


thêm asc trong đoàn chọn truy vấn thứ hai ... chỉ vì tuyên bố hiểu thêm ... mà không này (ASC) kết quả cũng truy vấn nên cung cấp cho mong muốn ..

Các vấn đề liên quan