mysql最后5条记录处于计数状态

问题描述 投票:-2回答:2

预订表

id    status
1     booked
1     booked
3     cancelled
2     cancelled
2     booked
1     cancelled
1     cancelled
1     booked
select id, count(status) as tot_cancel 
from tbl_booking 
where id=1 and status='cancelled';

结果将是

id    tot_cancel
1     2

但是我需要用户ID = 1的最后5条记录,并且已取消的计数未取消总表记录]

mysql sql group-by count sql-order-by
2个回答
0
投票

我知道您希望在用户1的最后5条记录中计数已取消的记录。这是可能的,但是您需要一列来定义行的顺序,因此哪些记录是明确的last

假设这样的列存在于您的表中并称为ordering_id,则可以执行以下操作:

select sum(status = 'cancelled') no_cancelled
from (select status from mytable where id = 1 order by ordering_id desc limit 5) t

0
投票

您可以使用limit子句进行条件聚合:

select 1 as id, sum(status = 'cancelled')
from table t
where id = 1
order by ? -- use sequence column instead
limit 5;
© www.soinside.com 2019 - 2024. All rights reserved.