zoukankan      html  css  js  c++  java
  • 【MySQL】设置好友关系(关注、粉丝、互关)的数据库设计

    主键 关注者id 被关注者id
    1 1 2
    2 1 3
    3 2 1
    4 2 3
    5 3 1
    6 3 4
    7 4 3
    8 5 6
    9 7 8

      

    先建一张好友关系表

    CREATE TABLE IF NOT EXISTS `follower` (
      `id` int(6) unsigned NOT NULL,
      `user_id` varchar(200) NOT NULL,
      `follower_id` varchar(200) NOT NULL,
      PRIMARY KEY (`id`)
    ) DEFAULT CHARSET=utf8;
    INSERT INTO `follower` (`id`, `user_id`, `follower_id`) VALUES
      ('1', '1', '2'),
      ('2', '1', '3'),
      ('3', '2', '1'),
      ('4', '2', '3'),
      ('5', '3', '1'),
      ('6', '3', '4'),
      ('7', '4', '3'),
      ('8', '5', '6'),
      ('9', '7', '8');

      我关注的人

    select * from follower where user_id = '1'

       关注我的人

    select * from follower where  follower_id = '1' 

      跟我互关的人

    select a.user_id from follower as a inner join follower as b
    on a.follower_id = '1' and b.follower_id = '1'

      但是运行上方代码,会有重复数据出现;

      跟我互关的人去重

    select a.* from (
      select a.user_id from follower as a inner join follower as b
      on a.follower_id = '1' and b.follower_id = '1'
    ) a group by a.user_id;

      判断两人关系(互关)

    select 1 from follower where user_id = '1' and follower_id = '2'
    union all 
    select 2 from follower where user_id = '2' and follower_id = '1'

    这里会返回一个List<Integer> 数组,有四种情况

    •      空数组 A,B 之前无任何关系
    •      [1,2] "1" 和 "2"相互关注
    •      [1]  "1" 关注了 "2"
    •      [2]  "2" 关注了 "1"

    分享链接:

    工作之余,开了一个淘宝小店,分别销售日常必备生活用品,期待您的光临!点击下图,跳转店铺首页!
  • 相关阅读:
    2013-06-28,“万能数据库查询分析器”在中关村本月数据库类下载排行中重返前10位
    Oracle 存储过程
    强化学习精要:核心算法与TensorFlow实现
    深入理解TensorFlow:架构设计与实现原理
    Vue.js实战
    TensorFlow机器学习实战指南
    深入浅出React和Redux
    Flutter技术入门与实战
    TensorFlow:实战Google深度学习框架
    深度学习:一起玩转TensorLayer
  • 原文地址:https://www.cnblogs.com/xjf125/p/15014515.html
Copyright © 2011-2022 走看看