下面是表格数据(Order_audit)
+------------+-----------------+
| OrderID | shipping_type |
+------------+-----------------+
| W1 | 0 |
| W1 | 2 |
| W2 | 2 |
| W3 | 2 |
| W3 | 2 |
| W3 | 1 |
| W4 | 0 |
| W5 | 1 |
| W5 | 2 |
+------------+-----------------+
我希望sql提取具有(0或1)和2组合的shipping_type的orderID。在此示例中,W1,W3,W5是符合此条件的订单。 假设表名称为order_audit。
请帮助我。
答案 0 :(得分:1)
我们可以尝试通过OrderID
进行汇总,然后在每个订单组中声明以下两个条件:
shipping_type
值shipping_type
值之一是2 如果以上两个条件均成立,则意味着该订单具有(0, 2)
或(1, 2)
作为运输组合。
SELECT OrderID
FROM yourTable
WHERE shipping_type IN (0, 1, 2)
GROUP BY OrderID
HAVING
COUNT(DISTINCT shipping_type) = 2 AND
MAX(CASE WHEN shipping_type = 2 THEN 1 ELSE 0 END) = 1;
答案 1 :(得分:1)
使用此查询的一种方法是查询所有shipping_type
为0或1且匹配条目为shipping_type
为2的订单。
SELECT OrderID
FROM order_audit a1
WHERE shipping_type IN(0,1) AND
EXISTS (SELECT *
FROM order_audit a2
WHERE a2.OrderID = a1.OrderID AND shipping_type = 2)