gpt4 book ai didi

SQL获取用户的 friend 和 friend 的 friend

转载 作者:可可西里 更新时间:2023-11-01 06:33:50 28 4
gpt4 key购买 nike

我的 MySQL 表结构是这样的。

USER
int id
varchar username

FRIEND_LIST
int user_id
int friend_id

对于每个 friend 关系,我在 FRIEND_LIST 中插入 2 条记录。如果用户 1 是用户 2 的 friend ,那么接下来的行将插入 FRIEND_LIST

1,2
2,1

我想获取特定用户的 friend 和 friend 的 friend 。

选择应该返回列 a、b、c。

a: user_id
b: friend_id
c: username (username of friend_id )

If 1 is friend of 2 and 3.
2 is friend of 3, 4 and 5
3 is friend of 5,6,7

然后获取 1 的 friend 和 friend 的 friend 的查询应该返回:

1 2 two
1 3 three
2 1 one
2 3 three
2 4 four
2 5 five
3 1 one
3 5 five
3 6 six
3 7 seven

我可以通过单个查询获取这些行吗?

更新答案:我稍微修改了 DVK 的答案,这是返回我正在寻找的内容的查询。

SELECT friends.user_id, friends.friend_id, username

FROM
FRIEND_LIST friends, USER

WHERE
CAT_USER.id = friends.friend_id
AND
friends.user_id = 1

UNION

SELECT
fof.user_id, fof.friend_id, username
FROM
FRIEND_LIST friends, FRIEND_LIST fof, USER
WHERE
USER.id = fof.friend_id
AND
friends.friend_id = fof.user_id
AND
friends.user_id = 1;

最佳答案

SELECT f1.user_id, f1.friend_id FROM
friends_info f1
WHERE f1.user_id = 1 OR
f1.user_id IN
(
select f2.friend_id
from friends_info f2
where f2.user_id = 1
)
ORDER BY user_id

关于SQL获取用户的 friend 和 friend 的 friend ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2806881/

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