我有下表 user_zebra
:
此表用于存储我网站上两个成员之间的友谊 - user_id 是发送 friend 请求的人,member_id 是他们试图添加的人。日期不言自明。
当其他用户对好友请求响应为"is"时,将添加另一个条目,但 user_id 和 member_id 翻转。只有当双方都有条目时,您才被视为 friend ...否则您只是关注该用户。
我需要知道的是是否有 SQL 代码可以返回 user_id 和 member_id 只有当有另一个条目翻转这些值时。这可能吗?或者有更简单的方法吗?
我希望我已经说清楚了,抱歉发了这么长的帖子。
最佳答案
是的。一种方法是 exists
:
select user_id, member_id
from t
where exists (select 1
from t t2
where t2.user_id = t.member_id and t2.member_id = t.user_id
);
MySQL也支持很方便的IN
-with-元组语法:
select t.*
from t
where (t.user_id, t.member_id) in (select t2.member_id, t2.user_id from t t2);
在这两个中,您可能想要添加 where user_id < member_id
以避免结果集中出现重复。
关于mysql - SQL - 用户 Zebra 表 - 两个用户是否相互关注?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51365009/