SQL获取用户朋友和朋友的朋友
发布时间:2020-05-28 17:31:07 所属栏目:MsSql 来源:互联网
导读:我的 MySQL表结构是这样的. USERint idvarchar usernameFRIEND_LISTint user_idint friend_id 对于每个朋友关系,我在FRIEND_LIST中插入2条记录. 如果用户1是用户2的朋友,则将下一行插入FRIEND_LIST 1,22,1 我想得到特定用户朋友的朋友和朋友. select应该返回
|
我的 MySQL表结构是这样的. USER int id varchar username FRIEND_LIST int user_id int friend_id 对于每个朋友关系,我在FRIEND_LIST中插入2条记录. 1,2 2,1 我想得到特定用户朋友的朋友和朋友. select应该返回列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的朋友和朋友的朋友应该返回: 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 friends.user_id,username FROM FRIEND_LIST friends,USER WHERE USER.id = friends.friend_id AND USER.id = 1 UNION SELECT USER.user_id,USER WHERE USER.id = fof.friend_id AND friends.friend_id = fof.user_id AND USER.id = 1 要么 SELECT user_id,f_fof.friend_id,username
FROM USER,(
SELECT f.user_id,f.friend_id
FROM FRIEND_LIST f
WHERE user_id = 1
UNION
SELECT f.user_id,fof.friend_id
FROM FRIEND_LIST f,FRIEND_LIST fof
WHERE user_id = 1
AND f.friend_id = fof.user_id
) as f_fof
WHERE USER.id = f_fof.friend_id (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- SQL Server 数据库存储过程分页显示
- sql – INSTEAD OF触发器和CASCADE路径
- SQL SERVER SQL入侵恢复xp_cmdshell方法总结
- sql-server – 使用TCP / IP连接到SQL Server 2008
- 解决sql server2008注册表写入失败,vs2013核心功能安装失败
- sql – 使用REGEXP_EXTRACT获取域和子域
- SQL Server2012在程序开发中实用的一些新特性
- sql-server – SQL Server 2008索引 – 查询的性能提升与IN
- 清空SQL Server日志 与set recovery simple
- sql-server – 可能攻击我的SQL服务器?
推荐文章
站长推荐
热点阅读
