我完全坚持如何创建这个选择。我只需要从状态表中选择那些order_id
没有状态 2 的。
这是表格:
+----+---------+---------+--
| id | order_id| status |
+----+---------+---------+--
| 1 | 1 | 1 |
| 2 | 1 | 2 |
| 3 | 2 | 1 |
| 4 | 2 | 2 |
| 5 | 3 | 1 |
| 1 | 3 | 3 |
| 2 | 4 | 2 |
| 3 | 4 | 1 |
| 4 | 4 | 2 |
| 5 | 5 | 3 |
+----+---------+----------+--
所以他选择的结果只会是order_id = 5
请帮忙!
如果您想包含状态为 1 的订单并排除状态为 3 的订单,那么您可以使用类似的想法:
having sum(case when status_id = 1 then 1 else 0 end) > 0 and
sum(case when status_id = 3 then 1 else 0 end) = 0
编辑:我喜欢排除那些 order_id:
- 只有状态 1(不是状态 2)
- 并且
- 有状态 3
让我们有这样的表:
id--order-id-Prod---Status
------------------------------
1 1 a 1
6 1 b 2
7 1 a 2
8 1 b 1
9 2 a 1
10 3 a 1
11 3 b 1
12 3 a 2
13 3 b 2
14 4 a 1
15 4 b 1
16 5 a 1
17 5 b 1
18 5 a 2
19 5 b 2
20 5 a 3
21 5 b 3
选择应该只显示 order_id "5"