我有一个名为user_zebra
的下表:
此表用于存储我网站上两个成员之间的友谊-user_id是发送朋友请求的人,而member_id是他们尝试添加的人。日期是不言自明的。
当另一个用户对好友请求的回答是“是”时,将添加另一个条目,但user_id和member_id会翻转。仅当双方都有条目时,您才被视为朋友...否则,您只是在关注该用户。
我需要知道的是,是否有SQL代码仅当存在另一个具有这些值被翻转的条目时才可以返回user_id和member_id。这可能吗?还是有更简单的方法?
我希望我对长篇文章说得很清楚和抱歉。
答案 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;
上述查询的逻辑是尝试将每个记录与其user_id
和member_id
交换位置的记录匹配。 WHERE
子句限制为user_id
小于或等于member_id
的关系。您从未告诉过我们要报告的那对。这是一种方法。