我有一个名为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。 我怎样才能改变我的查询呢?
答案 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)