sql中不同的外部组

时间:2016-01-27 14:10:59

标签: mysql sql

我有一个名为order_status_log的表,它记录了谁更改了订单状态。

以下简化的表格和查询:

order_id     user_id    status    time
1            1          1         2016-01-27 19:35:44
2            2          2         2016-01-27 19:36:45
4            3          2         2016-01-27 19:37:43
2            1          5         2016-01-27 19:38:41

我还有SQL计算每个用户的更改:

SELECT
    COUNT(*) as count,
    user_id
FROM order_status_log
WHERE status = 1
GROUP BY user_id
ORDER BY count

现在我想改进我的查询,只计算顺序中的第一个状态更改。 换句话说,我需要与旧时间相同的唯一order_id。 我怎样才能改变我的查询呢?

1 个答案:

答案 0 :(得分:2)

这样的东西?

SELECT *
FROM order_status_log o
WHERE NOT EXISTS 
    ( SELECT 'x'
    FROM order_status_log o2
    WHERE o2.user_id = o.user_id
    AND o2.time < o.time)