这应该很容易,但我有一点时间。为什么 ORDER BY with LIKE 将匹配结果排序为高于不匹配的值?为了得到我期望的结果,我必须在其他相同的数据上混合 ASC 和 DESC:
create table foo (name text);
select name from foo order by name like 'm%' desc, name;
"x" like 'm%' 是 FALSE;像 'm%' 这样的“车队”是 TRUE;“假”<“真”。
你可以用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)也查询应该给出期望的结果..