SQL条件分组依据

时间:2018-12-07 16:13:11

标签: mysql sql database

提供此表

// Copy array to keep order of origin array
$arr = $originArr;
usort($arr, function($a, $b){
    return explode('-', $b)[1] - explode('-', $a)[1];
});
echo $arr[0];
// h5-19

我想执行一个查询,提取所有id_status等于4的id_order,因此在这种情况下,输出应为:

id_order|id_status|
--------|---------|
141     |4        |
141     |4        |
142     |4        |
142     |4        |
143     |5        |
143     |4        |

id_order 143的订单将被排除,因为它具有id_status <> 4的一行。

3 个答案:

答案 0 :(得分:4)

我只会使用group byhaving

select id_order
from t
group by id_order
having min(id_status) = max(id_status) and min(id_status) = 4;

答案 1 :(得分:1)

类似的方法可以工作,但是根据您的索引,速度可能很慢

从t中选择不同的id_order id_order不在的位置(从t的id_status <> 4中选择id_order);

答案 2 :(得分:0)

为什么不

从t中选择id_order,其中id_status = 4(按id_order分组)