我正在抓取那些跟随彼此的记录(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
运算符,上面的查询工作正常,但我想获取那些彼此跟随的记录。在上面的结果中我只需要第一个和最后一个记录,因为a
和c
是相互跟随的。
id | follower | following
--+-----------+----------
1 | a | c
2 | c | a
任何人都可以指导我如何获取此类记录,如果有人帮助我,我会很感激。谢谢
答案 0 :(得分:2)
试试这些。
SELECT * FROM table WHERE (follower='a' AND following='c') OR (follower='c' AND following='a')
您的目标是检索彼此追随的用户吗?在这些查询中,它会选择a
跟随c
或c
跟随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 强>