在同一个表中获取公共行

Jam*_*s B 3 mysql sql database relational self-join

我有一点搜索,但没有发现任何类似于我想要实现的东西.

基本上,我试图找出两个用户的投票习惯之间的相似性.

我有一个表格存储每个人的投票,其中存储:

voteID
itemID     (the item the vote is attached to)
userID     (the user who voted)
direction  (whether the user voted the post up, or down)
Run Code Online (Sandbox Code Playgroud)

我的目标是通过找出两件事来计算用户A和B之间的相似性:

  1. 他们共同投票的数量.也就是说,他们都在同一个帖子上投票的次数(此时方向无关紧要).
  2. 在共同投票中,他们以同一方向投票的次数.

(然后简单地将#2计算为#1的百分比,以实现粗略的相似性评级).

我的问题是,如何找到两个用户的投票组合之间的交集?(即如何充分计算点#1,而不是以非常低效的方式循环每一次投票.)如果他们在不同的表中,内部联接就足够了,我想......但这显然不起作用在同一张桌子上(或者它会吗?).

任何想法将不胜感激.

nin*_*ded 5

像这样的东西:

SELECT COUNT(*)
FROM votes v1
INNER JOIN votes v2 ON (v1.item_id = v2.item_id)
WHERE v1.userID = 'userA'
AND v2.userUD = 'userB'
Run Code Online (Sandbox Code Playgroud)