如何获取mysqli中彼此跟随的记录?

时间:2016-07-24 08:37:34

标签: php mysql mysqli

我正在抓取那些跟随彼此的记录(users)。我有下表。

    id | follower | following
    --+-----------+----------
    1 |     a     |   c
    2 |     b     |   a
    3 |     a     |   g
    4 |     g     |   b
    5 |     c     |   a

我在尝试什么?

我正在尝试使用简单的操作符来完成任务。

SELECT * FROM `table` WHERE follower  LIKE '%a%' OR following LIKE '%a%'

结果

    id | follower | following
    --+-----------+----------
    1 |     a     |   c
    2 |     b     |   a
    3 |     a     |   g
    4 |     c     |   a

根据逻辑和like运算符,上面的查询工作正常,但我想获取那些彼此跟随的记录。在上面的结果中我只需要第一个和最后一个记录,因为ac是相互跟随的。

我需要

    id | follower | following
    --+-----------+----------
    1 |     a     |   c
    2 |     c     |   a

任何人都可以指导我如何获取此类记录,如果有人帮助我,我会很感激。谢谢

2 个答案:

答案 0 :(得分:2)

试试这些。

SELECT * FROM table WHERE (follower='a' AND following='c') OR (follower='c' AND following='a')

您的目标是检索彼此追随的用户吗?在这些查询中,它会选择a跟随cc跟随a

答案 1 :(得分:1)

  select t1.* 
     from thetable t1 
     join thetable t2 
     on t1.follower = t2.following and  t2.follower = t1.following

<强> demo

<强>更新

如果您对用户'a'感兴趣

 select t1.* 
    from t t1 
    join t t2 
    on t1.follower = t2.following and  t2.follower = t1.following 
    where 'a' in (t1.follower,t1.following,t2.follower,t2.following) 

<强> demo