相似度最高的成员 table
Most similar members in one table
在 table Member_Element
...(InnoDB,mysql 通过 maria db)
Member Element
1 A
1 B
1 C
1 E
2 A
2 B
2 C
2 D
3 A
3 D
我想得到与成员 1 具有最常见元素的成员(以及相似度的百分比。)成员 2 与成员 1 有共同的 A、B、C,应该是 "winner"因为成员 3 只有 A 共同点。
我有的是:
SELECT Member,Element
FROM Member_Element
WHERE Member=1
AND Element IN (SELECT Element
FROM Member_Element
GROUP BY Element
HAVING count(*)>1)
给出:元素 A、B、C ...,希望的结果集为:2(成员 2)
我想我需要帮助才能完成下一步并将所有子查询放在一起。
我看到了 "SQL- Selecting the most similar product",但它对我的理解和需要来说太复杂了。
为什么不使用简单的连接?
SELECT a.member, count(a.member) as total
FROM t1 a JOIN t1 b
WHERE a.element=b.element AND b.member=1 AND a.member > 1
GROUP BY a.member ORDER BY total DESC
在 table Member_Element
...(InnoDB,mysql 通过 maria db)
Member Element
1 A
1 B
1 C
1 E
2 A
2 B
2 C
2 D
3 A
3 D
我想得到与成员 1 具有最常见元素的成员(以及相似度的百分比。)成员 2 与成员 1 有共同的 A、B、C,应该是 "winner"因为成员 3 只有 A 共同点。
我有的是:
SELECT Member,Element
FROM Member_Element
WHERE Member=1
AND Element IN (SELECT Element
FROM Member_Element
GROUP BY Element
HAVING count(*)>1)
给出:元素 A、B、C ...,希望的结果集为:2(成员 2)
我想我需要帮助才能完成下一步并将所有子查询放在一起。
我看到了 "SQL- Selecting the most similar product",但它对我的理解和需要来说太复杂了。
为什么不使用简单的连接?
SELECT a.member, count(a.member) as total
FROM t1 a JOIN t1 b
WHERE a.element=b.element AND b.member=1 AND a.member > 1
GROUP BY a.member ORDER BY total DESC