模糊查询时 ,将完全匹配的结果排在最前怎么办 ?

 

 从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表示降序排列,即将完全匹配的结果排在最前面。


评论

 Select `id`,`Key`,`Description` From `dict_words` Where `key` LIKE '%for%' Order By `key`='for' Desc;

2023-11-29 19:42:50

SELECT `id`,`key`,`description` FROM `dict_words` WHERE `key` LIKE '%for%' ORDER BY `key`='for' DESC;

2023-11-23 00:47:00

  • 1

编程爱好者 © 2021 - 2024