【发布时间】:2021-08-24 08:55:49
【问题描述】:
我正在寻求解决问题的帮助。我有一个包含以下列/字段的表格 -
列 = 用户名 | 用户邮箱 | 用户兴趣 | ....和其他领域
值 = 用户A | userA@email.com | 1,2,10
价值 = 用户 B | userB@email.com | 15,27,9,7,2
userName(varchar) = 主键
userEmail(varchar) = 用户的电子邮件
userInterests(varchar) = 以逗号分隔的兴趣数字。我已经将这些数字映射到它们在 PHP 脚本中的实际值(兴趣)。例如1 - 绘画,2 - 跳舞等等......
现在我正在尝试寻找具有相似兴趣的用户。用户可以拥有的兴趣数量可能会有所不同。我的目标是为任何用户找到最佳匹配。
假设如果用户 A 有 3 个兴趣,用户 B 有 5 个兴趣,其中 1 个兴趣在两个用户中是共同的,所以我想得到匹配的用户名。假设如果有另一个用户有 2 个共同兴趣,那么在这种情况下,返回该个人资料。一般来说,我想找到最佳匹配(所有兴趣与其他用户相遇),如果没有,然后是次佳匹配(至少有 2 或 1 个共同兴趣)。
我已经使用过此解决方案,但无法获得所需的输出。只有一张表,所以我也不能使用连接。 SQL - Finding Users with Similar Interests
请帮我解决这个问题,过去 2 天我一直在处理这个问题,但找不到合适的解决方案。我尽力解释了这个问题,如果我没有这样做,请告诉我,我可以详细说明。谢谢
【问题讨论】:
-
也许 FIND_IN_SET 或使用 REGEXP 可以帮助发现出现?结合同一张表的子查询。
-
修复你的数据模型!在字符串中存储数字是错误的!不声明外键关系是错误的!在一个字符串列中存储多个值是错误的!