所以我有一个包含 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/