gpt4 book ai didi

sql - 好友关系查询

转载 作者:行者123 更新时间:2023-11-29 05:00:25 25 4
gpt4 key购买 nike

我有以下表格:

USERS

  • 编号
  • 用户名
  • 电子邮件
  • 密码
  • 状态

FRIENDS

  • 编号
  • 用户编号
  • friend_id
  • 创建

为了找到用户 friend ,我使用:

SELECT f.friend_id, 
u.username
FROM friends f
JOIN friends m ON m.user_id = f.friend_id
AND m.friend_id = f.user_id
JOIN users u ON u.user_id = f.friend_id
WHERE f.user_id = 1234

...效果很好。

问题

不过,我无法通过其他方式找到类似的查询,找到所有还不是 friend 的用户。它必须是这样的,获取所有 friend ,获取所有用户,删除所有作为 friend 的用户以留下剩余部分?

最佳答案

    SELECT u1.username, u2.username AS not_friend
FROM users u1
JOIN users u2 on u1.user_id != u2.user_id
LEFT JOIN friends f1 on u1.user_id = f1.user_id
and u2.user_id = f1.friend_id
LEFT JOIN friends f2 on u2.user_id = f2.user_id
and u1.user_id = f2.friend_id
WHERE u1.user_id = 1234
AND (f1.user_id IS NULL OR f2.user_id IS NULL)

对于 friend :

SELECT u1.username, u2.username AS friend
FROM users u1
JOIN users u2 on u1.user_id != u2.user_id
JOIN friends f1 on u1.user_id = f1.user_id
and u2.user_id = f1.friend_id
JOIN friends f2 on u2.user_id = f2.user_id
and u1.user_id = f2.friend_id
WHERE u1.user_id = 1234

关于sql - 好友关系查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1582731/

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