我目前有一个名为User_Followers的表,该表包含以下列:
User_Id Follower_Id
我正在尝试建立一个查询,该查询将检索用户关注的所有人员,但不会追随其后。
例如:
User ID | Follower ID
1 2
1 4
3 1
4 2
4 3
在上面的示例中,如果我要检查是否没有跟随用户4的用户,它应该返回1。
类似地,如果我要检查是否跟随用户2的用户,则应该返回1和4
答案 0 :(得分:1)
我正在尝试建立一个查询,该查询将检索用户关注的所有人员,但不会追随其后。
如果我理解正确,那么not exists
似乎可以满足您的要求:
select uf.user_id
from User_Followers uf
where uf.follower_id = @user and
not exists (select 1
from User_Followers uf2
where uf2.user_id = uf.follower_id and
uf2.follower_id = uf.user_id
);
答案 1 :(得分:0)
您有2个查询:
“被跟随” 可以这样写:
SELECT u.Follower_Id
FROM User_Followers u
WHERE u.User_Id = ?
“用户关注的所有人” 可以通过以下方式完成:
SELECT u.User_Id
FROM User_Followers u
WHERE u.Follower_Id = ?
现在,您可以将两个查询结合起来执行“用户关注的所有人” ,而不执行 “被关注的人” < / p>
SELECT u.User_Id
FROM User_Followers u
WHERE u.Follower_Id = ?
AND u.User_Id NOT IN
(
SELECT uf.Follower_Id
FROM User_Followers uf
WHERE uf.User_Id = ?
)