请教各位大侠,我有一张userinfo(uid,uname,uage)表和用户之间的关系表userfollow(foid,uid<关注者uid>,fid<被关注者uid>)表,有四种关系(无联系,只关注,只被关注,相互关注),现在根据usernanme字段模糊查询userinfo表,我现在需要得到的是查询出来的数据要和当前登陆用户是是属于哪种关系。我之前想写出四种关系的sql语句,然后根据查询的数据uid和当前用户的uid在表中userfollow进行判断,然后定义一个标志位,可是数据量过大的或是并发访问的话,数据库效能特别低,有没有其他方法。还有可能会写存储过程,但是我不会写,愿高手教我!!!!!!
注:四种关系 主要体现在userfollow表中,譬如userinfo表中有
uid uname uage
1 aa 20
2 bb 21
3 cc 21
4 dd 23
5 ee 22
foid uid fid
1 1 2
2 2 1
3 3 1
4 1 4
这样 1与2的关系是相互关注,1与3的关系是1只被3关注,1与4的关系就是只关注,1与5就是无联系
注:四种关系 主要体现在userfollow表中,譬如userinfo表中有
uid uname uage
1 aa 20
2 bb 21
3 cc 21
4 dd 23
5 ee 22
foid uid fid
1 1 2
2 2 1
3 3 1
4 1 4
这样 1与2的关系是相互关注,1与3的关系是1只被3关注,1与4的关系就是只关注,1与5就是无联系
解决方案 »
- sql server数据库一个字段ID的修改
- 一表的主键是自动生成的(默认值是一用户自定义函数,有两种编号),能否让它根据其他某列的值决定生成哪一种?
- 如何更换簇集索引(将主键的簇集索引改成其他列的簇集索引)
- 如何在java中把一个存储过程插入到数据库
- SQL SERVER 2005 XML 的问题
- 史上最难的题!晓得就说出来!谢谢
- A表是外层表,B表是内层表,扫描B的次数比A高很多倍啊,为什么都是成本50%呢? 我理解成本50%错误??
- 菜鸟提问~~~~~海量数据查询问题~~~
- 如何获得当前日期?(只要年月日)
- 如何在65中实现2000的函数功能。
- 64位 的win2008下的64位2008r2 编写的读取 oracle 11g数据的存储出错误
- SQL SERVER数据加密求助!
uid uname uage uattention(这个用户和当前登录用户的uid的关系)
这个结果集
select A.* from userinfo A where not exists(select top 1 1 from userfollow B where A.uid=B.uid or A.uid=B.fid)
--只被关注
select A.uid,B.uid from userinfo A inner join userfollow B on A.uid=B.fid;
--只关注
select A.uid,B.fid from userinfo A inner join userfollow B on A.uid=B.uid;
--相互关注
select A.* from userfollow A inner join userfollow B on A.uid=B.fid and A.fid=B.uid