mysql - 如何查看不同表中的 2 列之间是否存在匹配(以百分比表示)

标签 mysql python-2.7

我有来自 2 个源的 2 个不同的 MySQL 表,其中包含 field 名称!我想找到这些名称之间的匹配项并将其存储在第三个表中!这个想法是找到一个百分比,让我知道这些名称指的是同一个 field !如果它们匹配 >= 75 % 就是在谈论同一个 field !这样我就可以为第三个表选择一个 field 的单个名称(表 1 中的名称或表 2 中的名称)。我尝试了 MATCH AGAINST sintax 的一些方法,但没有得到想要的结果!提前致谢!我也期待可以使用 python 完成的想法!

对于即: 我有表 1:

ID | Name
---------
1  | Ministry of Sound
2  | 4 Elements
3  | Blue Marlin Ibiza

和表 2:

ID | Name
---------
1  | Ministry Sound
2  | Four Elements
3  | Blue Marlin 

如果表 1 中的第 1 行与表 2 中的第 1 行匹配 >= 75% 。在表 3 中,我将复制表 1 中的名称

最佳答案

我创建一个函数来比较匹配

<强> SQL Fiddle Demo

CREATE FUNCTION F_TEST (_ID INT, _NAME varchar(14)) 
RETURNS float
DETERMINISTIC
BEGIN 
  DECLARE match_ratio float;    

    SELECT (MATCH (`Name1`)
           AGAINST (_NAME IN BOOLEAN MODE)) INTO match_ratio 
    FROM Table3 
    WHERE `ID` = _ID;

  RETURN match_ratio;
END//

查询

SELECT `ID`, `Name1`, `Name2`, F_TEST(`ID`, `Name2`) AS score 
FROM Table3
ORDER BY score DESC;

输出

| ID |             Name1 |          Name2 |    score |
|----|-------------------|----------------|----------|
|  3 | Blue Marlin Ibiza |    Blue Marlin | 0.455289 |
|  1 | Ministry of Sound | Ministry Sound | 0.455289 |
|  2 |        4 Elements |  Four Elements | 0.227645 |

关于mysql - 如何查看不同表中的 2 列之间是否存在匹配(以百分比表示),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36338246/

相关文章:

python - 加快 datetime.strptime

python - 为什么 python 的 __init__ 函数没有返回语句,即使它是一个函数

php - 资源访问锁PHP

MYSQL - 最佳数据结构

时间戳中两个表的mysql重叠

php - MySQL 和 PHP IDE 独特功能

php - 分页过滤

python - Python 转换为数组时出现内存错误

python - Dymola Python 接口(interface) - 模拟扩展模型 : How to set up parameters?

string - Python fuzzywuzzy 错误字符串或缓冲区期望