我试图根据第一个字母对我的 mysql 查询进行排序,但我使用的每种方法都限制了我的搜索。
例子 MySQL表 值(value) 计算机服务 美国广播公司电脑服务 动态计算机服务
如果我搜索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 完整搜索文本的新手。
最佳答案
首先使用与“开头为”大小写匹配的 order by 子句。我在这里使用 not like
是因为 bool 值返回 0 或 1,我们想反转它以匹配开头与大小写优先。
SELECT name
FROM table
WHERE match('name') against('computer services*' IN BOOLEAN MODE)
ORDER BY name NOT LIKE 'computer services%', name;
关于php - 按首字母排序sql查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4935563/