我有一个带有这样的架构的订单表。
CREATE TABLE orders (
order_id int NOT NULL AUTO_INCREMENT,
customer_id int unsigned NOT NULL DEFAULT 0,
order_date int NOT NULL
)
我正在尝试检索每个客户最近订单的列表。该表可以由客户订购多个订单,每个订单的主键为order_id。
答案 0 :(得分:1)
当您对AUTO_INCREMENT
使用order_id
时,每order_id
customer_id
最高Select customer_id, Max( order_id ) max_order_id
From orders
Group By customer_id
应该是最新的:
order_id
如果您需要该行的所有列,则需要加入子选择(已修改以不依赖Select o.customer_id, o.order_id, o.order_date
From orders o
Join (
Select customer_id, Max( order_date ) max_order_date
From orders
Group By customer_id
) x On ( x.customer_id = c.customer_id AND x.max_order_date = o.order_date )
):
{{1}}
答案 1 :(得分:1)
select o.*
from (
select customer_id, max(order_date) as MaxOrderDate
from orders
group by customer_id
) om
inner join order o on om.customer_id = o.customer_id and om.MaxOrderDate = m.order_date
答案 2 :(得分:0)
SELECT * FROM orders
WHERE (customer_id, order_date) =
(select customer_id, max(order_date) from orders group by customer_id)