仅当每行2列相等时才选择行

考虑到我有下表:

命令:

id | article_id | order_id | status
39 |     1      |    16    |   2
40 |     1      |    16    |   1
41 |     2      |    16    |   2
42 |     3      |    16    |   2
43 |     2      |    17    |   1
44 |     2      |    17    |   0
45 |     3      |    17    |   1

现在我的问题是:

如果单行的所有状态均为MINIMUM 2,如何仅选择匹配的order_id的行?

例如,从上表中选择,我不会得到任何结果。但是,一旦从id 40的状态从1切换到2,select应该给我order_id 16的所有行。如何用单个SQL查询完成呢?

提前致谢!

评论
  • 朕好萌
    朕好萌 回复

    You can use not exists:

    select t.*
    from t
    where not exists (select 1
                      from t t2
                      where t2.order_id = t.order_id and t2.status < 2
                     );