MySQL匹配5个字段中的2个

Joa*_*nne 12 mysql

在MySQL中,我试图选择与提供的数据的至少2个字段匹配的任何行

例如.我已获得firstName,lastName,dob,网站,电子邮件,我想要任何与firstName和lastName,firstName和email,或网站和电子邮件等匹配的行.

我知道我可以写一个非常长的啰嗦声明(这=这个=这个=这个)OR(这=这个等等但是这个查询可能会变得非常大,特别是如果我们决定我们想匹配超过5领域.

我们还需要对匹配的行进行排名,因此如果某些行匹配3而不是仅匹配最少2个字段,那么它们应该在返回的结果中显示更高的值.

我之后可以用PHP处理它,或者做多个SQL查询,我只是想知道是否有人知道更简单/更清晰的方法来匹配这些数据?

我感谢任何帮助!乔

a'r*_*a'r 11

您可以计算匹配的表达式.MySQL为true返回1,false为0.

WHERE (FirstName = ?) + (LastName = ?) + (... = ?) > 2
Run Code Online (Sandbox Code Playgroud)

您也可以使用此订购.您需要按降序排序以确保首先出现较高的匹配项.

ORDER BY ((FirstName = ?) + (LastName = ?) + (... = ?)) DESC
Run Code Online (Sandbox Code Playgroud)