我正在使用表格来表示朋友/朋友请求。基本上我的想法是有这样的表结构:
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的所有行,并且我希望内部连接到包含用户信息的另一个表,我将如何在查询中检查是否存在行反比关系?
P.S。我想我可以很容易地做多个查询但我宁愿只有一个查询,如果可能的话。
答案 0 :(得分:0)
<强>解决方案:强>
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)