不希望列表中被用户阻止的用户列表?

时间:2017-06-01 11:33:02

标签: php sql codeigniter

Table : user 
Id name
1   a
2   b
3   c
4   d

Table : block_user
id block_by block
1   1         2

当我在那时检索用户1的列表时,我不希望用户2在列表中,但我坚持查询: 我希望用户3,4代替它返回被阻止的用户2

我的sql fiddle Fiddle here和我当前的查询

Select u.* from user u JOIN block_user bu on bu.block_by = u.Id or bu.block = u.Id where u.Id != 1 GROUP BY u.Id

4 个答案:

答案 0 :(得分:2)

你也可以使用这种非常排序你不必加入表而不是使用

中的地方
select * from user where id != 1 and id NOT IN (select block from block_user WHERE block_user.block_by = 1)

答案 1 :(得分:1)

我认为你想要not existsleft join。正确的逻辑是:

select u.*
from user u
where u.id <> 1 and
      not exists (select 1
                  from block_users bu
                  where bu.block_by = 1 and bu.block = u.id
                 );

答案 2 :(得分:1)

使用这个希望它会帮助你

Array

答案 3 :(得分:-1)

use可以使用嵌套查询,而不是

select * from user where id  NOT IN (select block from block_user)