从表中选择所有行,除非具有相同id的另一个表中的行在另一列中具有特定值

时间:2017-03-06 22:28:28

标签: php mysql sql

我想创建一个查询,从表中选择所有行,除非另一个表中的行具有与用户登录相同的id,并且在另一列中具有相同的值。

Table1
id    |    value
=================
1      |    10
2      |    20
3      |    30
4      |    40
5      |    50
6      |    60

-

Table2
id     |    user_ids   |  another_column
=========================================
1      |       2       |       30
2      |       4       |       50
3      |       4       |       60

因此,如果Table2.user_ids =(loggedin userid)并且同时Table1.value = Table2.another_column - 那些行不应该在结果中输出。

如果我们说我们有一个id为4的用户,那么用户不应该看到Table1中的row5或row6,因为值匹配

我应该使用某种子查询还是加入sql?

2 个答案:

答案 0 :(得分:0)

从上面的示例中获取ID为4的用户:

select * from Table1
where value not in (
  select another_column
  from Table2
  where user_ids = 4
);

答案 1 :(得分:0)

select  id, value from t1 where value not in (select another_column from t 2 where userid = 4)

类似的东西