欢迎访问WDPHP素材源码!今天是2024年04月29日 星期一,熬夜对身体不好,早点休息吧!
您好,游客 [ 马上登录 | 注册帐号 | 微信登录 | QQ登录]
当前位置:首页 > 教程 > 数据库 > 

mysql采用like模糊匹配并根据匹配度的多少对结果排序
栏目分类:数据库    发布日期:2023-05-23    浏览次数:438次     收藏

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

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

<?php
    $sql_search="select id,xingming from 表名1 where id='19jp.com' ";
    $result=$mysqli->query($sql_search);
    while ($rs=$result->fetch_assoc()){
    
        $sql_search2="select xingming,nicheng from 表名2 where  id='19jp.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.19jp.com
    }
?>

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

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


源码 模板 特效 素材 资源 教程 站长