【问题标题】:How to get followers/following listing from mysql query如何从 mysql 查询中获取关注者/关注列表
【发布时间】:2015-12-17 06:55:57
【问题描述】:

这是我的关注者/关注者数据库表模式。 我想获取特定用户的所有数据。例如 user_id 6 跟随 7,8,9 并且跟随 7。我的目的是确定该特定用户是否关注他的追随者。我怎样才能做到这一点?

id     |   user_id   |  follower_id
------------------------------------
1            6             7
2            6             8
3            7             6
4            8             15
5            6             9
6            5             7

【问题讨论】:

  • 好的,到目前为止你做了什么?你试过什么吗?
  • 我认为您必须使用带有 GROUP BY 语句的查询
  • 这是什么意思i want to list all this listing that if user_id 6 gets his followers then also get that he is also follow to that user or not.

标签: mysql


【解决方案1】:

你可以use separate queries:

要获得追随者

SELECT GROUP_CONCAT(DISTINCT t1.follower_id) as followers FROM test_f t1 WHERE t1.user_id = 6

要获得关注

SELECT GROUP_CONCAT(DISTINCT t2.user_id) as following FROM test_f t2 WHERE t2.follower_id = 6

【讨论】:

  • 你必须检查..我只是发布查询可能是这样的
  • @SomnathMuluk 我做了单独的查询,你可以试试
  • 我已经尝试对两个结果进行相同的查询。
  • 嘿,太好了.. @SomnathMuluk 它也会有帮助
【解决方案2】:

我已经加了dummy table data here:

您将获得每个用户的关注者列表:

SELECT user_id, GROUP_CONCAT(DISTINCT follower_id SEPARATOR ', ') as following 
FROM followers GROUP BY user_id

结果如下:

您可以在同一查询中获得关注者和关注者。

SELECT DISTINCT f.user_id, 
o.following,
e.follower
FROM followers f
LEFT JOIN
(
    SELECT followers.user_id, GROUP_CONCAT(DISTINCT follower_id SEPARATOR ', ') as following 
    FROM followers GROUP BY user_id
) as o ON f.user_id = o.user_id
LEFT JOIN
(
    SELECT followers.follower_id, GROUP_CONCAT(DISTINCT user_id SEPARATOR ', ') as follower 
    FROM followers GROUP BY follower_id
) as e ON f.user_id = e.follower_id

【讨论】:

    【解决方案3】:

    所以,对于给定的表 tmp

    id     |   user_id   |  follower_id
    ------------------------------------
    1            6             7
    2            6             8
    3            7             6
    4            8             15
    5            6             9
    6            5             7  
    7            9             6
    8            15            8
    

    这是查询:

    select t1.user_id, t1.follower_id
    from tmp t1
    join tmp t2
    on t1.user_id = t2.follower_id
    and t1.follower_id = t2.user_id
    where t1.user_id < t1.follower_id
    

    这将给出一个相互关注的列表,最后的 where 子句只是确保我们为“用户 - 关注者”相互关注获得一个唯一记录。

    输出:

    user_id   |  follower_id
    ------------------------------------
    6             7
    6             9
    8             15
    

    【讨论】:

      【解决方案4】:

      你可以试试这种方式,它对我有用追随者追随者

      $Followers = mysqli_query("SELECT id FROM followers WHERE  follower_id ='$_SESSION[id]'");
      echo "Followers :".mysqli_num_rows($Followers);
      
      
      $Following = mysqli_query("SELECT id FROM followers WHERE user_id ='$_SESSION[id]'");
          echo "Followers :".mysqli_num_rows($Followers);
      

      $_SESSION[id] 这是你的 id

      ..

      如果您想查看其他用户个人资料不是您的个人资料

      $Following = mysqli_query("SELECT id FROM followers WHERE  follower_id ='$_GET[u_id]'");
      echo "Following :".mysqli_num_rows($Following);
      
      $Following = mysqli_query("SELECT id FROM followers WHERE  user_id ='$_GET[u_id]'");
          echo "Following :".mysqli_num_rows($Following);
      

      $_GET[u_id]您查看的用户ID

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-10-20
        • 1970-01-01
        • 2015-06-20
        • 2013-02-02
        • 1970-01-01
        • 2013-05-29
        • 1970-01-01
        • 2019-02-26
        相关资源
        最近更新 更多