gpt4 book ai didi

mysql - 在双向关系表中获取唯一的 friend 关系

转载 作者:行者123 更新时间:2023-11-29 03:23:50 24 4
gpt4 key购买 nike

我的友谊表有以下数据库结构:

friends
-------
id | user_id | friend_id | action
1 25 32 done
2 32 25 done
3 85 50 done
4 50 85 not now
5 18 52 done

我得到了这个维护项目,它使用上面的结构来存储友谊。以下是案例:

  1. 25 和 32 是 friend ,因为他们有记录 (id 1, 2) 并且在 action 列中完成

  2. 用户 85 向 50 (id: 3) 发送了请求,但 50 没有接受并采取“不是现在”的操作

  3. 用户 52 没有根据用户 18 的请求采取任何行动


  • 现在我想从上面的结构中获取所有唯一的完整关系(当两个用户都已完成操作时)。因此,25 和 32 之间的关系应该只显示一次。
  • 所有未响应请求或未采取行动的用户不是现在

由于这是一个维护项目,我无法真正更改结构,因此必须解决这个问题。

最佳答案

您可以连接两个子查询,一个用于关系的每一侧。为确保您不会得到重复的答案,您可以让一个子查询句柄 user_id 小于 friend_id,而另一个句柄则相反:

SELECT u.user_id, u.fried_id
FROM (SELECT user_id, friend_id
FROM friendship
WHERE user_id < friend_id AND status = 'done') u
JOIN (SELECT user_id, friend_id
FROM friendship
WHERE user_id > friend_id AND status = 'done') f ON
u.user_id = f.friend_id AND
u.friend_id = f.user_id

关于mysql - 在双向关系表中获取唯一的 friend 关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39544871/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com