创建一个查询以检索Mysql中的某些行

时间:2010-03-09 19:17:40

标签: mysql

我有一个带有这样的架构的订单表。

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。

3 个答案:

答案 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)