SQL

获取同一表中的公共行

发布于 2021-06-04 16:42:45

我进行了一些搜索,但没有找到与我要达到的目标完全相同的东西。

基本上,我试图找到两个用户的投票习惯之间的相似之处。

我有一张表格,其中存储了进行的每个个人投票,该表格存储:

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之间的相似度:

  1. 他们有共同的票数 。也就是说,他们俩都对同一条帖子进行了投票的次数(此时的方向并不重要)。
  2. 他们以共同的投票朝同一个方向投票的次数

(然后只需将#2计算为#1的百分比,即可获得粗略的相似度等级)。

我的问题是, 如何找到两个用户的投票集之间的交集?
(即我如何充分地计算第1点,而又不会以非常低效的方式遍历每张选票。)我想,如果它们在不同的表中,INNER
JOIN就足够了……但这显然行不通在同一张桌子上(或者会吗?)。

任何想法将不胜感激。

关注者
0
被浏览
81
1 个回答
  • 面试哥
    面试哥 2021-06-04
    为面试而生,有面试问题,就找面试哥。

    像这样的东西:

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


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看