java - MySQL在2个表中查找相似数据

标签 java mysql database

所以我有一个包含 2 个表、电影和 PS3 的数据库。 每个都包含标题。 我从 IMDB 基于视频游戏的标题列表中获取了电影标题。并非所有游戏都与它们所基于的游戏具有相同的标题,但可能有一两个相似的单词。

我想知道如何在 PS3 上使用这些标题并将其与电影进行比较。 我想退回类似的商品。

例如,《生化危机:天启》是一部电影,没有名为《生化危机:天启》的游戏,但 PS3 上有不同名称的《生化危机》游戏,所以想获取该数据。

我该怎么办呢?我尝试做

WHERE ps3.titles LIKE '%movie.titles%'

但是这不起作用。 我什至不确定这在 MySQL 中是否可行。 感谢您的反馈

最佳答案

整体搭配是一个很高的要求。但就语法而言,请考虑以下内容:

WHERE ps3.titles LIKE CONCAT('%',movie.titles,'%')

MySQL 会将 movie.title 视为标识符(例如,作为对查询中引用的表中的列的引用)。 '%' 是文字,CONCAT 将文字与列中的值串在一起,然后可以计算 LIKE 比较运算符。

<小时/>

紧密的弦的比较是整个大粘蜡球。

就 MySQL 中可用的内容而言,它非常有限。

MyISAM 引擎具有 FULLTEXT 索引,这对于通过“关键字”匹配查找行非常有用。 (将被索引并被视为“匹配”的字符串长度有一个下限。我认为默认值是 4 个字符,这消除了“A”、“of”和“the”等单词。)

MySQL还有REGEXP比较运算符,它比LIKE比较运算符更强大;但您必须手动进行自己的比较。

SOUNDEX 函数对于识别“接近”匹配也很有用...例如将“Apocalypse”与“Apokalyps”匹配;但我认为这不会帮助您将“Apocalypse”与“Rewind:The Apocalyse Chronicles”相匹配。

仅针对标题的任何匹配都会受到限制且不精确。您会得到一些匹配项,并且您获得的匹配项越多,就越不正确。

关于java - MySQL在2个表中查找相似数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22816166/

相关文章:

java - 以编程方式运行 Spring Batch Job?

php - MySQL 或 PHP : Find optimum combination of rows based on score

php - 使用 PHP PDO/MySQL 连接到数据库的安全方法?

MySQL:如何基于 SELECT 查询更新查询

java - CPanel SQL : Need Remote Access, CPanel 或 WHM 中没有授予权限

mysql - 用对应字段的值替换某一字段的查询

java - 在 Java 代码中为 TextView 设置文本

java - 为什么用Weekyear解析日期会返回错误的年份?

Java 按字符串查找和比较成员(也许是 JPA 功能?)

java - 网络驱动程序异常 : unknown error: cannot determine loading status from timeout: Timed out receiving message from renderer: 60 using Selenium and Java