同桌选择好友请求
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
谢谢!)以上是关于同桌选择好友请求的主要内容,如果未能解决你的问题,请参考以下文章
如何使用POSTMAN发送请求参数到一个写好加解密方法的接口里