我有两张table users
以及 blocked
我要做的函数是 Facebook
, Instagram
等,当一个用户阻止另一个用户时,我的意思是如果我用户8阻止了用户9,用户9看不到我,但他可以看到所有其他用户
我要问的是下一个问题
Select * from users WHERE id NOT IN
(Select idblock from blocked where blocked.idBlock = users.id);
这是一张table
这是用户表
我的问题是,当我用id 3的用户登录时是可以的,但是当我用另一个id的用户登录时,不会显示其他用户
我对这个查询的期望是(什么是正确的)
正如您在blocked表中看到的,除了id 11之外,ohters id(users)阻止了我,但是如果我像id user 10那样被登录,那么显示这个
所以我不认为这是因为10号身份证没有被封锁
我希望有人能理解我
2条答案
按热度按时间yacmzcpb1#
我会用一个
LEFT JOIN
完成所需的输出。下面的查询尝试将指定用户(#3)的阻止请求与数据库中的所有其他用户进行匹配(
LEFT JOIN
),只返回未被阻止的用户(WHERE b.id IS NULL
).cdmah0mi2#
你需要写信
NOT exists
关于子查询和检查b.IdBlocked
在子查询中。sqlfiddle:http://sqlfiddle.com/#!18/c14ee/13年
如果
User ID = 3
然后结果:
如果
User ID = 10
然后结果: