mysql - 如何创建友情关系sql(mysql)?

标签 mysql

我有一个 mysql 表:

friend (id,用户id, friend id)

和一个表 users (id, username) 例如:

(1,'John'), (2, 'Jerry'), (3, 'Larry), (4, 'Marry')

约翰和杰瑞是 friend ,所以我们有 friend

(1,2)
(2,2)

拉里请求约翰成为约翰的 friend ,但约翰没有接受

(3,1)

约翰向玛丽提出了请求,但玛丽没有接受

(1,4)

有没有办法执行 SQL 来为 John 的 friend 获取一些结果:

(1, Jerry)

在所有表中我们都有

(1,2)
(2,2)
(3,1)
(1,4)

最佳答案

select u.*
from friends f1
join friends f2 on f2.user_id = f1.friend_id
join users u on u.id = f1.friend_id
where f1.user_id = 1 -- John's id

friends表与其本身连接起来将确保“友谊”是“双向的”。

关于mysql - 如何创建友情关系sql(mysql)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50374224/

相关文章:

php - 按日期从 2 个表中排序数据

php - 从多个表中排序数据

php - 我做错了什么? (PHP 准备语句)

php - mysql 使用 IF NOT IN 关键字或替代方法选择所有其他数据

php - php-Google云端硬盘上的XAMPP

python MySQLdb在尝试INSERT INTO表时得到无效语法

mysql - 将 select 语句的值设置为变量并在更新查询 mysql 中使用

mysql - #1227 - 访问被拒绝;您需要(至少一项)SHOW DATABASES 权限才能执行此操作

php - 将数组从 MySQL JOIN(有重复项)转换为嵌套关联数组

mysql - 查找以字母开头的列的正则表达式