文档章节

类似微博判断用户关系的sql语句

烤猪佩奇
 烤猪佩奇
发布于 2016/02/29 17:21
字数 277
阅读 6
收藏 0

类似新浪微博的关注与相互关注 

不知道别人是怎么设计的。

反正我是如下设计的

 ID   USER   FRIEND 

 1     A         B 

2      B         A

3     A         C

 ID为自增

 user为发起关注者 friend为被关注者

 现在需求如下。给出A、B两用户ID如何判断A与B的关系 很简单要,是A关注B,还是A与B相互关注 一条SQL尽可能的利用索引,不用OR,尽可能的快速 (不要求得到B是否关注A) 


select *
from xxxxx
where USER='A' and  FRIEND='B'
union all
select *
from xxxxx
where USER='B' and  FRIEND='A' 


create table tb_user_concern
(ID      int  auto_increment primary key,
 USER    varchar(32),
 FRIEND  varchar(32)
);

-- 查询和A相互关注的USER
select *
from tb_user_concern a
where user = 'A'
and exists 
    (select *
     from tb_user_concern b
     where a.user = b.friend
     and a.friend = b.user);
     
-- 查询A关注,但未关注A的USER
select *
from tb_user_concern a
where user = 'A'
and not exists 
    (select *
     from tb_user_concern b
     where a.user = b.friend
     and a.friend = b.user);

-- 查询关注A,但A未关注的USER 
select *
from tb_user_concern a
where friend = 'A'
and not exists 
    (select *
     from tb_user_concern b
     where a.user = b.friend
     and a.friend = b.user);

本文转载自:http://blog.csdn.net/cjaver/article/details/39853399

共有 人打赏支持
烤猪佩奇
粉丝 18
博文 46
码字总数 6583
作品 0
广州
高级程序员
iOS开发系列--数据存取

概览 在iOS开发中数据存储的方式可以归纳为两类:一类是存储为文件,另一类是存储到数据库。例如前面IOS开发系列—Objective-C之Foundation框架的文章中提到归档、plist文件存储,包括偏好设...

jianxin160
2015/08/18
0
0
【mybatis学习】--mapper.xml中常用的标签积累

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/YYZZHC999/article/details/82319305 一· 常用标签组示例: 二、部分标签总结 1.sql片段标签: 通过该标签可...

Hepburn_Yang
09/02
0
0
【已解决】PHP项目需求:用户购买商品时,给上级发送一条通知(无限级下级会员)

无限级的过程 上下级会员关系通过id和pid确定。 例如:a>b>c>d>e>f>g... 就是a的下级是b,b的下级是c,c的下级是d....(有点类似传*销模式?无视掉) 需求,通过用户g查出所有的上级,则要查到...

Eller
2016/01/13
325
2
听云Server for Node.js公测开启

  【IT168 资讯】听云是国内较大的应用性能监测平台,专注于帮助开发者解决应用上线后性能问题的监控与管理。其拥有20万个遍布全国的真实用户节点,平台每日帮助监控超100亿次真实用户请求...

网易科技
2015/07/29
0
0
MyBatis 实践 -动态SQL/关联查询

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/hanqing280441589/article/details/50761310 标签: Java与存储 动态SQL 动态SQL提供了对SQL语句的灵活操作,...

菜鸟-翡青
2016/02/28
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Sql语言与MySql数据库

1. 数据库简介 1. 数据库,就是存储数据的仓库,只能通过sql语言来访问,数据库也是一个文件系统。通常,MySQL、Oracle等数据库,也被称为关系型数据库,其保存的不仅仅只是数据,还包括数据...

江左煤郎
12分钟前
0
0
IDEA 取消自动import .*

打开设置 > Editor > Code Style > Java > Scheme Default > Imports ① 将 Class count to use import with "*" 改为 99 (导入同一个包的类超过这个数值自动变为 * ) ② 将 Names count ......

乔老哥
14分钟前
1
0
PostGIS学习笔记(开篇)

PostGIS事实上算是笔者开始写博客的第一篇内容。而事实上那篇博文的内容并不丰富,笔者对PostGIS的了解仍然不多,然而17年在OSGeo课程学习时对PostGIS又有了进一步了解,并逐步发现它的强大。...

胖胖雕
14分钟前
1
0
【Centos】在nginx服务器中配置php和mysql

接上一章《【Centos】利用Vultr服务器和namesilo布网》(https://my.oschina.net/u/3776619/blog/2051986),在Centos中配置好nginx,并在iptables中开启了80端口,和为了远程mysql操作方便开...

yongh701
38分钟前
2
0
flume -- fileChannel简要分析其过程

flume之event写入FileChannel doPut(event)-->获取共享锁后[log.lockShared();]-->FlumeEventPointer ptr = log.put(transactionID, event); 此处的log.put即将transactionID及event进行后续......

-九天-
50分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部