返回最佳匹配的SQL查询(具有最匹配列的行)

时间:2017-03-18 19:01:56

标签: php sql

我的数据库如下所示:

id | A | B | C | D

并且对于每个字母,有一个介于0和3之间的随机值。

这些值会针对每个ID进行更改。

如何选择匹配列最匹配的行,即使它不是完美匹配?

(这显示了我的意思:)。

http://prnt.sc/elkyzn

我希望这张照片有帮助, 我需要为您创建一个与狗匹配的15个问题测验。 15中的每个问题都返回0到3之间的值,然后有11个是或否问题(0 =否,1 =是)

在测验结束时,我得到这样的结果:(从pereson变为人)0-3,0-4,0-2,0-2,0 / 1,0 / 1,0 / 1 ,0 / 1,0 / 1,0 / 1,0 / 1,0 / 1,0 / 1,0 / 1,0 /。

我需要收集这些值并获得最佳匹配,即具有最匹配列的狗。

2 个答案:

答案 0 :(得分:0)

我认为你需要配备一个评分系统,因为你没有寻找完全匹配。一个想法的例子是。

从中选择ID { 选择A-B,A-C,A-D,B-C,B-D,C-D,id 从表 外面的 哪里(在这里用一些逻辑来确定你认为合适的东西)

一个想法是总结内部查询的所有差异。但是,如果你有一个非常大的,一个非常小的那个,这可能会产生错误的结果。

你也可以做所有差异之和的AVG。

您可以做的另一件事是按内部查询中的列顺序排序,其中差异为0.按个别情况排序0 else 1结束。

或组合。

这实际上取决于你想要得到什么

答案 1 :(得分:0)

您可以选择所有具有与输入之和相同的列总和的元素 那么你可以通过他们来看看比赛,并保持变量" $ best"填写时将更新的内容找到包含更多匹配项的元素