MYSQL查询用于在另一个表中查找没有某些关联行的行。

时间:2015-02-25 16:22:01

标签: mysql

我确信答案已经出现在某处,但我很难说清楚我需要什么,所以我认为最好举个例子。以这两个表格为例:

     PLAN TABLE          OTHER TABLE ASSOCIATED TO PLAN
___________________      ____________________________
|  PK  |  planID  |      |  PK  |  planID  |  flag  |
-------------------      ----------------------------
|  1   |    51    |      |  1   |    51    |    0   |
|  2   |    62    |      |  2   |    51    |    1   |
|  3   |    73    |      |  3   |    51    |    1   |
-------------------      |  4   |    62    |    0   |
                         |  5   |    62    |    0   |
                         |  6   |    62    |    1   |
                         |  7   |    73    |    0   |
                         |  8   |    73    |    0   |
                         |  9   |    73    |    0   |
                         ----------------------------

我正在努力解决的问题是编写一个查询,它会从计划表中返回所有planID,这些planID在关联表中没有带有flag = 1的条目。所以在这种情况下查询的结果会是:

____________
|  planID  |
------------
|    73    |
============

1 个答案:

答案 0 :(得分:1)

我认为你需要类似的东西(未经测试):

select planId
from plan
where not exist (
    select 1
    from other_table
    where plan.planId = other_table.planId
    and flag = 1
)