【发布时间】:2016-04-21 11:06:39
【问题描述】:
这是我的桌子,存储 2 个足球队名称(主客)的方式基本不同
-----------------------------------------------------------------------------
|host|host_aio|h_unchar|h_a|h_b|guest|guest_aio|guest_unchar|guest_a|guest_b|
-----------------------------------------------------------------------------
我有一个主持人和一个客人姓名,我会以不同的方式将它们分解,以找到与搜索团队对应的行
例如Melbourne Victory VS Brisbane Roar
我的查询是:
SELECT `host`,`guest`,`h_aio`,`g_aio`,`h_unchar`,`g_unchar`,`h_a`,`h_b`,`g_a`,`g_b`
FROM `tbl` WHERE (
host IN ('melbourne victory','melbournevictory','melbourne','victory')||
h_aio IN ('melbourne victory','melbournevictory','melbourne','victory')||
h_unchar IN ('melbourne victory','melbournevictory','melbourne','victory') ||
h_a IN ('melbourne victory','melbournevictory','melbourne','victory') ||
h_b IN ('melbourne victory','melbournevictory','melbourne','victory') ||
h_c IN ('melbourne victory','melbournevictory','melbourne','victory') ||
h_d IN ('melbourne victory','melbournevictory','melbourne','victory') ||
h_g IN ('melbourne victory','melbournevictory','melbourne','victory') )
AND (
guest IN ('brisbane roar','brisbaneroar','brisbane','roar')||
g_aio IN ('brisbane roar','brisbaneroar','brisbane','roar')||
g_unchar IN ('brisbane roar','brisbaneroar','brisbane','roar')||
g_a IN ('brisbane roar','brisbaneroar','brisbane','roar') ||
g_a IN ('brisbane roar','brisbaneroar','brisbane','roar') ||
g_b IN ('brisbane roar','brisbaneroar','brisbane','roar') ||
g_c IN ('brisbane roar','brisbaneroar','brisbane','roar') ||
g_d IN ('brisbane roar','brisbaneroar','brisbane','roar') ||
g_g IN ('brisbane roar','brisbaneroar','brisbane','roar') )
ORDER BY FIELD(`h_unchar`, 'melbournevictory'), FIELD(`g_unchar`, 'brisbaneroar')
结果如下:
我想通过h_unchar 和g_unchar 与host 和guest 的相关性/相似性对结果进行排序,这就是我添加的原因。
ORDER BY FIELD(`h_unchar`, 'melbournevictory'), FIELD(`g_unchar`, 'brisbaneroar')
但正如您在图片中看到的,21 岁以下的匹配 (U21) 位于顶部
我怎样才能在顶部获得更相似的行?
这里有更多信息:
基本上我从 2 个不同的 API 中获取球队名称,第一个 API 名称与第二个 API 名称略有不同,例如(巴塞罗那和巴塞罗那)
每个 api 都有一个唯一的信息,其他 api 不会发送...所以我需要以某种方式连接这 2 个 api 并从两者中获取每个游戏的所有信息 .. 我将第一个存储在数据库中,当第二个一个发送我在数据库中搜索的信息以使用团队名称查找第一个 api 信息(api 1 在比赛前发送数据,abpi 2 在比赛后发送数据)
【问题讨论】:
-
@RyanVincent 基本上我从 2 个不同的 API 获取团队名称,前 1 个名称与第二个名称略有不同(
fc barcelona和Barcelona),每个 api 都有一个独特的信息,其他 api不会发送...所以我需要以某种方式连接这2个api并从两者中获取每个游戏的所有信息..我将第一个存储在数据库中,当第二个发送信息时我在数据库中搜索以找到第一个api使用团队名称的信息 -
@RyanVincent 实际上这是规范化表,该表仅包含主机和来宾名称的不同变体,其他数据存储在不同的表中......我无法再规范化该表,因为我需要在单个查询中检查主机和来宾名称,以避免其他团队使用相似名称
标签: mysql