数据库
首页 > 数据库> > sql – 在同一个表中获取公共行

sql – 在同一个表中获取公共行

作者:互联网

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

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

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

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

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

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

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

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

任何想法将不胜感激.

解决方法:

像这样的东西:

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

标签:mysql,database,sql,self-join,relational
来源: https://codeday.me/bug/20190714/1457679.html