多对多关系过滤器
Posted
技术标签:
【中文标题】多对多关系过滤器【英文标题】:Many to many relation filter 【发布时间】:2013-12-09 05:52:00 【问题描述】:我有以下表格:
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 和 5)。
有人可以帮忙吗。
【问题讨论】:
您尝试过任何解决方案吗? 是的,我想说的最好的是得票最多的。 【参考方案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)
)
【讨论】:
【参考方案2】:SELECT * FROM user_table
LEFT JOIN follow_table ON user_table.id = follow_table.following_id
WHERE follow_table.following_id IS NULL
【讨论】:
【参考方案3】:试试这个:
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
【讨论】:
以上是关于多对多关系过滤器的主要内容,如果未能解决你的问题,请参考以下文章