Oracle SQL如何编写一个sql语句来验证我的网络中的用户(即朋友或
发布时间:2020-12-12 13:08:31 所属栏目:百科 来源:网络整理
导读:我有这个问题.给定一个用户表,其中包含社交网络中的用户用户名和包含用户姓名和用户友好名称的朋友表,如下所示… username friendnameJohn ThomasChris James …我正在尝试编写一条SQL语句,如果用户在我的网络中.换一种说法 该用户是朋友的朋友还是朋友? 我
我有这个问题.给定一个用户表,其中包含社交网络中的用户用户名和包含用户姓名和用户友好名称的朋友表,如下所示…
username friendname John Thomas Chris James …我正在尝试编写一条SQL语句,如果用户在我的网络中.换一种说法 我一直在围绕这个问题跳舞,只能提出这个问题: SELECT f2.username,f2.friendname FROM friends f2 WHERE f2.username IN ( SELECT f1.friendname FROM friends f1 WHERE f1.username = 'Thomas') AND f2.friendname <> 'user1' AND f2.friendname = 'user2'; 它基本上检查用户是否是我朋友的朋友,即如果为false则返回null. 试图找出我如何扩展以通过我所有的朋友网络.我的意思不仅仅是我朋友的朋友. SELECT * FROM ( SELECT username FROM friends START WITH username = 'myname' CONNECT BY friendname = PRIOR username AND level <= 3 ) WHERE username = 'friendname' AND rownum = 1 根据需要更新级别:您可以搜索第三层朋友等. 如果友谊关系是对称的,则应进行以下查询: WITH q AS ( SELECT username,friendname FROM friends UNION ALL SELECT friendname,username FROM friends ),f AS ( SELECT friendname,level FROM q START WITH username = 'Thomas' CONNECT BY NOCYCLE username = PRIOR friendname ) SELECT * FROM f WHERE friendname = 'Jo' AND rownum = 1 如果对表进行非规范化,则可以更快地进行此查询:每个友谊存储两条记录,如下所示: CREATE TABLE dual_friends (orestes NOT NULL,pylades NOT NULL,CONSTRAINT pk_dualfriends_op PRIMARY KEY (orestes,pylades)) ORGANIZATION INDEX AS SELECT username,friendname FROM friends UNION ALL SELECT friendname,username FROM friends 然后你可以用dual_friends替换上面的CTE: WITH f AS ( SELECT pylades,level FROM dual_friends START WITH orestes = 'Thomas' CONNECT BY NOCYCLE orestes = PRIOR pylades AND level <= 3 ) SELECT * FROM f WHERE pylades = 'Jo' AND rownum = 1 ,它将使用索引并且效率更高,特别是如果您将级别限制为某个合理的值. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- VB.net学习笔记(二十四)线程基础
- c – 我可以使用模板函数指针的std :: vector吗?
- React + webpack 开发单页面应用简明中文文档教程(六)渲染
- react this的作用域问题,麻烦大佬们帮我解决一下
- swift3 – Swift 3 scrollToRowAtIndexPath成为scrollToRow
- 单一世界架构初探之世界地图
- PostgreSQL INSERT ON CONFLICT UPDATE(upsert)使用所有排除
- 实现 instagram 底部弹出菜单的一个例子(模拟 instagram 系
- iphone – 为什么会出现无效的上下文错误?
- flash p2p(RTMFP)协议