首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >查找共同朋友sql

查找共同朋友sql
EN

Stack Overflow用户
提问于 2016-03-19 01:12:31
回答 3查看 4.2K关注 0票数 3

实际上,我有两个表,朋友表和用户表,我试图实现的是通过检查另一个用户的朋友并从用户表中获取这些共同朋友的数据来收回我的共同朋友。

桌友是这样建的

代码语言:javascript
复制
id | user1 | user2 | friend_status

然后表数据如下所示

代码语言:javascript
复制
1 | 1 | 2 | 1
2 | 1 | 3 | 1
3 | 2 | 3 | 1
4 | 1 | 4 | 1
5 | 2 | 4 | 1

那么假设我是id 2的用户,那么在那个表中我有3个朋友- 1,3和4。我想检索的是用户1的普通朋友,它也有3位朋友- 2,3和4,并从表用户中检索2个共同朋友3和4的数据。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-03-19 12:57:04

您可以使用UNION来获得用户朋友:

代码语言:javascript
复制
SELECT User2 UserId FROM friends WHERE User1 = 1
  UNION 
SELECT User1 UserId FROM friends WHERE User2 = 1

然后,在UNION上为两个不同的用户加入其中的两个UserId,您可以得到以下共同的朋友:

代码语言:javascript
复制
SELECT UserAFriends.UserId FROM
(
  SELECT User2 UserId FROM friends WHERE User1 = 1
    UNION 
  SELECT User1 UserId FROM friends WHERE User2 = 1
) AS UserAFriends
JOIN  
(
  SELECT User2 UserId FROM friends WHERE User1 = 2
    UNION 
  SELECT User1 UserId FROM friends WHERE User2 = 2
) AS UserBFriends 
ON  UserAFriends.UserId = UserBFriends.UserId
票数 1
EN

Stack Overflow用户

发布于 2016-03-19 04:19:11

下面是一种使用union all将用户1和用户2的所有好友组合起来的方法,并使用count(distinct src) > 1只选择与两个用户都是朋友的朋友。

代码语言:javascript
复制
select friend from (
    select 2 src, user1 friend from friends where user2 = 2
    union all select 2, user2 from friends where user1 = 2
    union all select 1, user1 from friends where user2 = 1
    union all select 1, user2 from friends where user1 = 1
) t group by friend
having count(distinct src) > 1
票数 1
EN

Stack Overflow用户

发布于 2016-03-19 04:16:39

你需要这样的东西吗?

代码语言:javascript
复制
create table #table (id int, user1 int , user2 int, friend_status int)

insert into #table values

(1 , 1 , 2 , 1),
(2 , 1 , 3 , 1),
(3 , 2 , 3 , 1),
(4 , 1 , 4 , 1),
(5 , 2 , 4 , 1),
(6 , 2 , 1 , 1),
(7,  3 , 7 , 1)

select *from #table

select t1.user1, t1.user2 as friend
from #table t1
inner join
#table  t2
on (t1.user2 = t2.user2
and t1.user1 <> t2.user1)
where t1.user1<>2
order by t1.user1
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36096713

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档