5

这应该很容易,但我有一点时间。为什么 ORDER BY with LIKE 将匹配结果排序为高于不匹配的值?为了得到我期望的结果,我必须在其他相同的数据上混合 ASC 和 DESC:

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

2 回答 2

8

"x" like 'm%' 是 FALSE;像 'm%' 这样的“车队”是 TRUE;“假”<“真”。

于 2012-04-16T17:37:25.960 回答
0

你可以用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

它会根据您的要求给出结果.. :)


在第二个联合选择查询中添加了 asc ......只是为了更容易理解的语句......没有这个(ASC)也查询应该给出期望的结果..

于 2012-04-16T17:37:24.553 回答