我有一个表格可以存储用户对很多问题的选择 选择是A,B或C.(或0,1,2但每个问题限于3个相同的值) 所以表格如下:
question user choice
1 1 A
1 2 A
1 3 B
2 1 C
2 2 A
2 3 B
3 1 B
3 2 C
3 3 B
. . .
. . .
. . .
N N N
我想要做的是比较选择和组用户使用相同的选项,如last.fm邻居。
我可以将一个用户与另一个用户进行IN和NOT IN查询比较,或者选择所有行并与php的数组函数进行比较。但随着数据库的发展,这种方法将不可行,而且这也只比较了两个用户。
也许以我无法想象的方式散列用户的选择可以帮助。
答案 0 :(得分:0)
SELECT a.user, b.user, COUNT(*) AS common
FROM Choice a
LEFT JOIN Choice b
ON a.user != b.user
AND a.question = b.question
AND a.choice = b.choice
GROUB BY a.user, b.user
将为两个用户返回他们以相同方式回答了多少问题。也许这有帮助。