我完全停留在如何創建此選擇。我需要從狀態表中只選擇那些order_id
的其中沒有身份2.SQL選擇不包括某些狀態的記錄
下面是表:
+----+---------+---------+--
| 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」
這工作正常,但是如果我想排除那些只有狀態1的order_id,並且包含狀態爲3的order_id(如前所述),並且表看起來像這樣。 – user2544102