2

我搜索了许多不同的项目,但没有找到任何答案。有可能我只是不知道如何正确地用这个词。

无论如何,我已经在 PHP/SQL 中建立了一个系统,以允许即时扫描数千个结果。每个数据条目有 4 个数字,它可以轻松扫描与所有 4 个数字匹配的条目。我想要实现的是让脚本在数据库中搜索与 4 个条目中的 3 个完全匹配的条目,而另一个不正确,有点像彩票。

For example, we have the entries:
Steve - 1, 4, 10, 13
Bill - 3, 4, 10, 13
Tom - 1, 17, 20, 39
Jill - 1, 4, 13, 21
Jane - 5, 10, 13, 18

现在,我将根据结果 1、4、10、13 进行扫描,并希望返回以下结果,因为它们匹配 4 个条目中的 3 个:

Bill - 3, 4, 10, 13
Jill - 1, 4, 13, 21

我将如何实现这一目标?

非常感谢

编辑:对不起,表格的结构名称 - Number1 - Number2 - Number3 - Number4

所以是的,存储为单独的字段

4

1 回答 1

8

您可以通过计算匹配并将其设置为 3 来做到这一点:

select t.*
from t
where (val1 in (1, 4, 10, 13) +
       val2 in (1, 4, 10, 13) +
       val3 in (1, 4, 10, 13) +
       val4 in (1, 4, 10, 13)
      ) = 3;

在 MySQL 中,一个 TRUE 布尔表达式的计算结果为1. 您可以将这些加在一起以获得匹配数。

于 2013-10-30T00:27:41.577 回答