原始的MySQL查询绝对不是不是我的强项,所以我对此有点挣扎,但是:用这样简单的表格布局:
+----+-----------+----------+---------------------+
| id | status_id | order_id | created_at |
+----+-----------+----------+---------------------+
| 1 | 1 | 1 | 2016-03-21 20:40:39 |
| 2 | 3 | 1 | 2016-03-21 20:40:45 |
| 3 | 5 | 1 | 2016-03-21 20:47:14 |
| 4 | 1 | 2 | 2016-03-25 12:14:44 |
| 6 | 3 | 2 | 2016-03-25 12:16:12 |
| 7 | 5 | 2 | 2016-03-25 12:47:43 |
| 8 | 1 | 3 | 2016-03-26 17:25:12 |
| 9 | 3 | 3 | 2016-03-26 17:25:48 |
+----+-----------+----------+---------------------+
我只想选择order_id
等于status_id
的{{1}}行,而不是同一3
order_id
status_id
的{{1}}行。 }}。因此,我的查询只应返回订单ID 3 ,但我当前的查询会返回结果中的所有3个订单ID:
5
我的查询在哪里出错?
答案 0 :(得分:3)
当您需要每组2个或更多条件时使用后聚合过滤。一个简单的规则WHERE过滤具有过滤器组的行
SELECT order_id FROM shop_order_status_log_records
GROUP BY order_id
HAVING SUM(status_id = 3)>0
AND SUM(status_id = 5)=0