我搜索了许多不同的项目,但我没有找到任何答案。机会是我只是不知道如何正确地说出来。
无论如何,我已经在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所以是的,存储为单独的字段
答案 0 :(得分: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
。您可以将这些添加在一起以获得匹配数。