回答

收藏

获取同一表中的公共行

技术问答 技术问答 247 人阅读 | 0 人回复 | 2023-09-12

我进行了一些搜索,但我没有找到与我想要实现的目标完全相同的东西。
1 |. C* t  _4 S% o' E7 v/ ~8 N7 e基本上,我试图找到两个用户的投票习惯之间的相似之处。
; @5 p! B% L* ?+ _7 V4 Y" N我有一张存储每个人投票的表格:# M' r3 b0 C% X
voteIDitemID     (the item the vote is attached to)userID     (the user who voted)direction  (whether the user voted the post up,or down)我的目的是通过找出两件事来计算用户A和B相似性:6 Y' ~/ n( y: F2 t0 v8 B
[ol]他们有共同的票数    。也就是说,他们都在同一个帖子上投票(方向不重要)。
& M" _6 M2 u; b! V; Y7 v他们在同一方向以共同的方式投票    。[/ol](然后只需将#2计算为#1的百分比,可获得粗略的相似度等级)。
5 B3 P4 S3 K  k" n3 A我的问题是,如何在两个用户的投票集之间找到交集?
  a  S. a! N( N* W/ ~; q/ B(也就是说,我如何在不以非常低效的方式遍历每一张选票的情况下,充分计算第一点?)我想,如果它们在不同的表中,INNER
4 ^5 a5 f/ y( \/ ]$ O; p+ bJOIN就足够了……但是在同一张桌子上显然行不通(或者可以吗?; X/ E7 C5 d" m* j- n
任何想法都将不胜感激。" ]$ b% C# F; Y" k) T
                                                                # u4 i" S, @$ ~& ?
    解决方案:                                                                0 m# C1 w( B# Y3 P2 z
                                                                这样的事:
8 s& \% \6 B% T3 N# @' d( CSELECT COUNT(*)FROM votes v1INNER JOIN votes v2 ON (v1.item_id = v2.item_id)WHERE v1.userID = 'userA'AND v2.userUD = 'userB
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则