Dan*_*ght 8 php mysql comparison combinations
假设我有一个MySQL表,people.每个记录包括各种性质,在这些之中favourite_colour,country和age_group.
我想要做的是通过它们与一组特定参数的相似性从该表中检索记录.例如,给定"红色","美国"和"18-25",最好的结果将是那些匹配所有三个的记录.这些将是100%匹配.
但是,我还想检索匹配两个参数(66%匹配)或任何一个参数(33%匹配)的任意组合的记录.此外,我想能够定义比较的附加点(例如underwear_type,marital_status等).
这个问题有一个相对有效的解决方案吗?
Ale*_*lli 11
是的,您可以将每个比较(例如favourite_colour='Red'&c)转换为0(false)或1(true)的值 - mysql将隐式执行此操作,但为了一般性,您可能需要
CAST( (favourite_colour='Red') AS INTEGER)&c; 然后,你们SUM所有这些,即
SELECT
userId,
SUM( (favourite_colour='Red'),
(country='US'),
(age_group='18-25') ) AS match_score
FROM people
WHERE match_score >= 2
ORDER BY match_score DESC
Run Code Online (Sandbox Code Playgroud)
会给你完美的比赛,接下来是2比2; 很容易概括到更多的检查! - )