如何从所有客户那里获得前 3 个订单?

  • 本文关键字:那里 客户 mysql sql
  • 更新时间 :
  • 英文 :


我在MySQL数据库中有2个表。

tbl_clients
id | name
1  | Mike
2  | John
3  | Dave
.........
N  | N
tbl_orders
id | order_date  | price | client_id
1  | 2018-03-19  | 1000  | 1
2  | 2018-03-19  | 5000  | 2
3  | 2018-05-19  | 3000  | 3
................
N  | N           |  N    | N

在我的任务中,由于一些统计原因,我需要接受前 3 个订单,由 id = 2 和 3 的客户。

是否可以通过一个查询获取数据,如何获取数据?

在MySQL 8.0中,你可以简单地使用row_number()。 早期版本中的一个选项是相关子查询 - 假设order_date是唯一的:

select o.*
from tbl_orders o
where o.order_date <= (select o2.order_date
from tbl_orders o2
where o2.client_id = o.client_id
order by o2.order_date asc
limit 2, 1
);

如果您确实想将其限制为仅 2 个客户端,则可以在外部查询中添加where o.client_id in (2, 3)

相关内容

最新更新