从MySQL数据库 模糊查询时 ,将要完全匹配的结果排在最前怎么办 ?
SELECT `id`,`key`,`description` FROM `dict_words` WHERE `key` LIKE '%for%' ORDER BY `key`='for' DESC; SELECT `id`,`key`,`description` FROM `dict_words` WHERE `key` LIKE '%for%' ORDER BY `key`!='for' ASC; SELECT `id`,`key`,`description` FROM `dict_words` WHERE `key` LIKE '%for%' ORDER BY `key`not in('for') ASC;
在 thinkphp5 中 从MySQL数据库模糊查询时,可以使用MySQL的ORDER BY语句将完全匹配的结果排在最前。具体实现方法如下:
// 使用Query对象进行模糊查询 use think\db\Query; $query = new Query(); $result = $query->table('think_user') ->where('name', 'like', '%thinkphp%') ->orderRaw("name = 'thinkphp' desc") ->select();
在上述代码中,使用了orderRaw()方法来添加ORDER BY语句,其中name = 'thinkphp’表示完全匹配的条件,desc表示降序排列,即将完全匹配的结果排在最前面。