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

0h4hbjxa  于 2021-07-26  发布在  Java
关注(0)|答案(1)|浏览(220)

考虑到我有下表:
订单:

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

现在我的问题是:
仅当单个行的所有状态至少为2时,如何选择匹配订单id的行?
例如,从上表中选择,我不应该得到任何结果。但是,一旦id 40的状态从1切换到2,select就会给出order\u id 16的所有行。如何通过一个sql查询来实现这一点?
提前谢谢!

mkh04yzy

mkh04yzy1#

你可以用 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
                 );

相关问题