【发布时间】:2013-10-31 19:15:00
【问题描述】:
我有下一个示例表:
+===========================+
| person_id | preference_id |
+===========+===============+
| 1 | 1 |
| 1 | 2 |
| 1 | 3 |
| 2 | 1 |
| 3 | 4 |
| 4 | 1 |
| 4 | 3 |
| 5 | 2 |
| 5 | 8 |
+___________+_______________+
我想获得 person_id 1 的前 10 个交集(是的,示例仅包括 5 个人)。 我是说: (1,2,3) ∩ (1) ∩ (4) ∩ (1,3) ∩ (2,8)
我们有四个“person_id 1”的三个交集 对于person_id 2:(1) 对于person_id 4:(1,3) 对于person_id 5:(2)
//person_id 3: no set that contains in person_id 1
而且……我们不知道 person_id 2、3、4、5 等。person_id 和 preference_id 包括超过 10000 行。 如您所见,我想要: - 在 mysql 中搜索交叉点的快速清洁方式 - 获得前 10 个交叉点(person_id 4 在假设位置数的情况下最相关。然后是 2 和 5) 感谢您的关注。
【问题讨论】:
-
。 .我,一方面,不知道你在问什么。深吸一口气,喝一口水。编辑问题,并假装您正在向孩子解释。我们没有您要解决的问题的上下文。列是什么意思?您提出请求的目的是什么?你期待的结果是什么?您是否意识到对于您的初始请求,答案是空集?
-
我想我明白他想要什么:与 person_id 1 最相似的 person_id。
-
实际上,他想要前 10 个 person_id,按照他们与 person_id 共有的preference_id 的数量排名。想想约会服务试图通过共同兴趣的数量来匹配人们。
标签: mysql sql intersection