多对多关系过滤

时间:2013-12-09 05:52:01

标签: mysql sql select join notin

我有以下表格:

user (id, firstname, lastname)

follow (id, follower_id, following_id)

现在假设我们有id为1,2,3,4,5的用户

user_id = 1已经跟随用户2和3。

现在我想编写一个查询,告诉我user_id's (user_id = 1)我不遵循的是{4}和(4)。

有人可以帮忙。

3 个答案:

答案 0 :(得分:1)

这应该这样做:

SELECT id FROM user 
WHERE 
    id NOT IN 
    (
        SELECT following_id 
        WHERE follower_id = 1 --(or you can use any user i, i used 1 to show an example)
    )

答案 1 :(得分:0)

SELECT * FROM user_table
LEFT JOIN follow_table ON user_table.id = follow_table.following_id
WHERE follow_table.following_id IS NULL

答案 2 :(得分:0)

试试这个:

SELECT * FROM user_table ut
LEFT JOIN follow_table ft ON ut.id = ft.following_id AND ft.follower_id = 1
WHERE ft.following_id IS NULL