欢迎您来到,李雷博客 | PHP博客        登录  |  注册

mysql采用like模糊匹配并根据匹配度的多少对结果排序

更新:2022-06-01 10:04:15
人气:1265
来源:本站原创
A+

有这样一个需求,在mysql数据库进行模糊匹配一个数据表中的姓名在其它数据表中多个字段中进行匹配,效果是想实现根据匹配量的多少进行结果排序。

数据样子就是表名2中的数据列xingming和nicheng中可能会有表名1中的xingming,根据匹配量计算匹配分值:

<?php
    $sql_search="select id,xingming from 表名1 where id='mdaima.com' ";
    $result=$mysqli->query($sql_search);
    while ($rs=$result->fetch_assoc()){
    
        $sql_search2="select xingming,nicheng from 表名2 where  id='mdaima.com' and (xingming like '%".$rs["xingming"]."%' or nicheng like '%".$rs["xingming"]."%') order by ((xingming like '%".$rs["xingming"]."%') + (nicheng like '%".$rs["xingming"]."%')   ) desc limit 1 ";
        $result2=$mysqli->query($sql_search2);
        if ($rs2=$result2->fetch_assoc()){
                //处理的逻辑
                $xingming=$rs2["xingming"];  //这个就是匹配次数最多的结果
        }
        //李雷博客 www.mdaima.com
    }
?>

这里面最重要的是就是order by这一段PHP代码,可以相加排序,然后用desc是为了匹配度最高就是倒序排列,而limit 1是因为我只要一个最匹配的结果,如果用while循环就不要limit 1了。

order by ((xingming like '%".$rs["xingming"]."%') + (nicheng like '%".$rs["xingming"]."%')   ) desc limit 1 ";


推荐的文章
# 发表我的评论
  /     /  
# 最近评论
暂时还没有评论,要不要说点什么?
  Ads by Google
  联系博主
Hello,本博客系统采用PHP和MySql开发,程序开发完全是因为个人爱好,是自己纯手写PHP源代码,未采用任何PHP框架!
QQ:858353007   微信号:lileihot123
网站地图
会员服务
关于我们
QQ:858353007
 
广告服务
加我微信
移动端访问
 
 
Copyright © 2014- 2025 www.mdaima.com All Rights Reserved.
李雷博客,专注PHP经验、PHP教程及PHP源代码开源下载分享的PHP博客!   ICP备案号:京ICP备10202169号-4