按第一个字母排序的sql查询

问题描述:

我试图根据第一个字母排序我的mysql查询,但是我使用的每种方法都限制了我的搜索。按第一个字母排序的sql查询

MySQL表 价值 计算机服务 ABC计算机服务 动态计算机服务

如果我搜索computer services我想要的结果,以返回:

**Name** 
computer services 
abc computer services 
dynamic computer services 

我使用MySQL的全文搜索的文本,但如果我使用name LIKE 'c%'我没有其他两个结果,例如

SELECT name FROM table WHERE match('name') against('computer services*' IN BOOLEAN MODE) AND name LIKE 'c%'; 

这只会返回

  • 计算机服务

但我想它返回:

  • 计算机服务
  • ABC计算机服务
  • 动态计算机服务

我是mysql新增的全搜索文本。

+0

我对全文搜索不太了解(这就是为什么我发布的评论,而不是答案),但我会猜测尝试摆脱`name LIKE'c%'`和走着瞧吧。这个表达式只会匹配以`c`开头的东西,后面跟着任何东西。 `abc computer services`不以'c`开头,所以我认为这就是为什么它没有被选中。 – FrustratedWithFormsDesigner 2011-02-08 16:32:55

+0

感谢所有发布的人。分钟内惊人的响应! – 2011-02-08 16:45:50

首先使用与“开始”情况相匹配的order by子句。我在这里使用not like,因为布尔值返回0或1,我们想要反转它以匹配首先匹配case。

SELECT name 
FROM table 
WHERE match('name') against('computer services*' IN BOOLEAN MODE) 
ORDER BY name NOT LIKE 'computer services%', name;