【问题标题】:Check if inverse relationship exists in table检查表中是否存在反向关系
【发布时间】:2018-03-29 07:20:44
【问题描述】:

我正在使用表格来表示朋友/朋友请求。基本上我的想法是有一个这样的表结构:

CREATE TABLE friends( 
    user_id NUMERIC NOT NULL, 
    friend_user_id NUMERIC NOT NULL 
    UNIQUE (user_id,friend_user_id)
)

当用户想要创建朋友时,您需要添加一行:

INSERT INTO friends(user_id,friend_user_id) VALUES($1,$2)

然后,当其他用户接受好友请求时,您只需添加上一行的倒数(即,从技术上讲,收件人将向发件人发送好友请求,从而完成好友关系):

INSERT INTO friends(user_id,friend_user_id) VALUES($2,$1)

我的问题:

如果我想获取用户的所有朋友,我必须获取具有该用户 ID 的所有行,并且我想将其与包含用户信息的另一个表进行内部连接,我将如何在查询中检查行反比关系是否存在?

附:我想我可以很容易地做多个查询,但如果可能的话,我宁愿只做一个查询。

【问题讨论】:

  • 您好,欢迎来到 SO。太好了,您能够弄清楚。既然您解决了问题,请将其添加为答案并将其标记为已接受或删除此问题。我推荐第一个选项。干杯。
  • 它不会让我将其标记为接受 2 天
  • 没问题。在那之后回来并标记它。

标签: sql postgresql


【解决方案1】:

解决方案:

SELECT users.id,users.username,users.avatar FROM users 
   INNER JOIN friends ON users.id = friends.user_id
   WHERE friends.user_id = $1 AND 
   EXISTS (SELECT 1 FROM friends WHERE friend_user_id = $1 AND user_id = friends.user_id)

【讨论】:

    猜你喜欢
    • 2020-06-21
    • 1970-01-01
    • 2014-11-14
    • 2015-01-29
    • 2014-08-24
    • 2014-01-15
    • 2020-05-14
    • 1970-01-01
    • 2017-09-16
    相关资源
    最近更新 更多