MySQL查询仅选择值= X且值为<>的条目ÿ

时间:2016-04-11 18:23:58

标签: mysql

原始的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

我的查询在哪里出错?

1 个答案:

答案 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