SQL-用户Zebra表-两个用户互相关注吗?

时间:2018-07-16 15:12:49

标签: mysql sql

我有一个名为user_zebra的下表:

Click here to see the table

此表用于存储我网站上两个成员之间的友谊-user_id是发送朋友请求的人,而member_id是他们尝试添加的人。日期是不言自明的。

当另一个用户对好友请求的回答是“是”时,将添加另一个条目,但user_id和member_id会翻转。仅当双方都有条目时,您才被视为朋友...否则,您只是在关注该用户。

我需要知道的是,是否有SQL代码仅当存在另一个具有这些值被翻转的条目时才可以返回user_id和member_id。这可能吗?还是有更简单的方法?

我希望我对长篇文章说得很清楚和抱歉。

2 个答案:

答案 0 :(得分:0)

是的。一种方法是nameof

// yields the string "myVariable.MyList[i].MyProperty"
ExpressionHelper.GetText(() => myVariable.MyList[i].MyProperty);

MySQL还支持非常方便的exists-with-tuples语法:

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
             );

在这两种方法中,您可能希望添加IN以避免结果集中重复。

答案 1 :(得分:0)

我们可以在此处尝试使用自我联接:

SELECT t1.user_id, t1.member_id
FROM yourTable t1
INNER JOIN yourTable t2
    ON t1.user_id = t2.member_id AND t1.member_id = t2.user_id
WHERE t1.user_id <= t1.member_id;

enter image description here

Demo

上述查询的逻辑是尝试将每个记录与其user_idmember_id交换位置的记录匹配。 WHERE子句限制为user_id小于或等于member_id的关系。您从未告诉过我们要报告的那对。这是一种方法。