MySQL在2个表中查找类似的数据

时间:2014-04-02 15:27:51

标签: java mysql database

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

我想知道如何在ps3上使用标题并将其与电影进行比较。 我想退回类似的项目。

例如,“生化危机:天启”是一部电影,没有一款名为“生化危机:启示录”的游戏,但PS3上的生化危机游戏有不同的名字,所以想获得这些数据。

我怎么能这样做?我试着做了

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

但它不起作用。 我甚至不确定它是否可以在MySQL中使用。 感谢您的任何反馈

1 个答案:

答案 0 :(得分:2)

整体匹配是一项艰巨的任务。但就语法而言,请考虑一下:

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

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


关闭弦的比较是整个大的粘球蜡。

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

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

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

SOUNDEX功能对于识别“近距离”匹配也很有用......就像将“启示录”与“Apokalyps”匹配一样;但我认为这不会帮助你将“启示录”与“倒带:启示录编年史”相提并论。

只是标题上的任何匹配都是有限的,并且是不精确的。你会得到一些比赛,你得到的比赛越多,就越不正确。

相关问题