同桌选择好友请求

Posted

技术标签:

【中文标题】同桌选择好友请求【英文标题】:same table select friend request 【发布时间】:2019-08-31 16:23:59 【问题描述】:

我正在编写一个聊天数据库。 如果用户是朋友,那么他们在朋友表中有彼此,就像我的表中的用户 1 和 2 或 1 和 5(见链接)。 但我想知道是谁作为朋友发送了申请。在这种情况下,只有一个人存储了另一个人的 id,例如向用户 7 发送请求的用户 1。 我有桌子:

(只有 3 列:idfriend、iduser、friend_id)

如何选择发送好友请求的用户 ID (friend_id)? 如果我选择了用户 1,那么我的 sql 必须返回这个好友请求:

|friend_id|

7

我试试这个:

select friend.friend_id from friend inner join friend as friends on 
friend.iduser != friends.friend_id and friends.iduser != friend.friend_id  
and friend.iduser != friends.iduser and friend.friend_id != 
friends.friend_id where friend.iduser = 1

但这里选择 7,2 和 5。只需要 7

【问题讨论】:

字段 idfriend 是自动递增的。无视他 。 .你的问题不清楚。将结果集显示为表格。 【参考方案1】:

不存在:

select t.friend_id from friend t
where t.iduser = 1 
and not exists (
  select 0 from friend
  where iduser = t.friend_id and friend_id = t.iduser 
)

请参阅demo。 结果:

| friend_id |
| --------- |
| 7         |

【讨论】:

谢谢,它有效!你能告诉我我应该使用什么 sql requset 来查找朋友朋友,比如用户 1-2 和 1-5 吗? 我不明白你的意思。此代码适用于 1 个用户。如果您想要多个用户的结果,请将 where t.iduser = 1 更改为 where t.iduser in (1, 3. 5) 不,我的意思是如何找到朋友 1 的所有朋友,例如 select friend_id from friend where iduser = 1 如果朋友的意思是这些 id 存在于两列中,则使用 exists 代替 not exists【参考方案2】:

希望这是您正在寻找的解决方案:

select t1.iduser, t1.friend_id
from friends t1
where t1.friend_id not in
(
select t2.iduser
from friends t2
where t2.friend_id = t1.iduser
)

【讨论】:

select t1.friend_id from friend t1 where t1.friend_id not in ( select t2.iduser from friend t2 where t2.friend_id = t1.iduser ) and t1.iduser = 1 谢谢!)

以上是关于同桌选择好友请求的主要内容,如果未能解决你的问题,请参考以下文章

怎样把qq表情包发送给好友

如何使用POSTMAN发送请求参数到一个写好加解密方法的接口里

MySql 查询从好友表中获取好友列表

用微信怎么发送好友验证请求?

微信开发SDK使用教程--手机微信有好友请求添加好友的通知服务端

Xmpp 接受好友请求