我有来自 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/