gpt4 book ai didi

mysql - 查找具有可互换行的相似条目

转载 作者:行者123 更新时间:2023-11-28 23:45:13 26 4
gpt4 key购买 nike

我确实有一个包含 NPC 条目的 MySQL 表。每个 NPC 有 3 个能力槽。每个槽位有两个可能的值。

我正在尝试寻找相似的 NPC。类似的意思如下:每个 NPC 都可以用这 6 种能力构建相同的能力组合。插槽是可以互换的,但 a 值和 b 值始终保持在一起。

示例:在下表中,NPC 40 和 41 是相似的。 NPC 42 不会与他们相似,因为它无法构建相同的能力组合,即使 6 个法术 ID 相同:

NPC 40和41可使用技能:492+429+538;

NPC 42 不能,因为 492 和 429 在同一个插槽上。

NPC
+-----+---------+---------+---------+---------+---------+---------+
| id | slot_1a | slot_1b | slot_2a | slot_2b | slot_3a | slot_3b |
+-----+---------+---------+---------+---------+---------+---------+
| 39 | 384 | 202 | 389 | 392 | 459 | 278 |
| 40 | 429 | 535 | 492 | 357 | 538 | 536 |
| 41 | 492 | 357 | 429 | 535 | 538 | 536 |
| 42 | 492 | 429 | 357 | 535 | 538 | 536 |
+-----+---------+---------+---------+---------+---------+---------+

如果我没记错的话,类似的 NPC 有 48 种可能的组合。现在我想知道是否有更简单的解决方案来查找相似的 NPC 然后检查所有 48 种组合?

SQL Fiddle(新数据):http://sqlfiddle.com/#!9/4c1aae/1

编辑: 忘记说了,每个插槽的值也可以切换它们的位置。这可能就是为什么 @Kostas Mitsarakis 不能 100% 工作的原因。

最佳答案

我几乎可以肯定有更好的方法,但您可以试试这个。您必须检查每个插槽组合是否与其他插槽组合匹配。

SQL Fiddle

SELECT aa.npc_id, bb.npc_id
FROM npc AS aa, npc AS bb
WHERE
( (
aa.slot_1a = bb.slot_1a AND aa.slot_1b = bb.slot_1b)
OR (aa.slot_1a = bb.slot_2a AND aa.slot_1b = bb.slot_2b)
OR (aa.slot_1a = bb.slot_3a AND aa.slot_1b = bb.slot_3b)
)
AND
( (
aa.slot_2a = bb.slot_1a AND aa.slot_2b = bb.slot_1b)
OR (aa.slot_2a = bb.slot_2a AND aa.slot_2b = bb.slot_2b)
OR (aa.slot_2a = bb.slot_3a AND aa.slot_2b = bb.slot_3b)
)
AND
( (
aa.slot_3a = bb.slot_1a AND aa.slot_3b = bb.slot_1b)
OR (aa.slot_3a = bb.slot_2a AND aa.slot_3b = bb.slot_2b)
OR (aa.slot_3a = bb.slot_3a AND aa.slot_3b = bb.slot_3b)
)
AND aa.npc_id != bb.npc_id;

关于mysql - 查找具有可互换行的相似条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33726988/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com