1
回答
订单的操作记录表,每个订单各取最后一条记录,这个Sql要怎么写?
华为云实践训练营,热门技术免费实践!>>>   

有一个订单操作记录表,表结构是这么样的。

  create table order_operation (
         id int unsigned primary key auto_increment,
         order_id int unsigned not null, /* 订单号 */
         operation_type varchar(64) not null, /* 操作类型 */
         operation_content varchar(255) not null default '', /* 操作内容 */
  )

假如有一下数据:

| id | order_id | operation_type | operation_content |
|----+----------+----------------+-------------------|
|  1 |     1000 | ADD            |                   |
|  2 |     1001 | ADD            |                   |
|  3 |     1002 | UPDATE         | Change address    |
|  4 |     1000 | DELETE         | Cancel order      |
|  5 |     1002 | DELETE         | Cancel order      |

那么现在有个需求是每个订单各获取最后一条记录,对于上面的数据,理应是下面的结果:

| id | order_id | operation_type | operation_content |
|----+----------+----------------+-------------------|
|  2 |     1001 | ADD            |                   |
|  4 |     1000 | DELETE         | Cancel order      |
|  5 |     1002 | DELETE         | Cancel order      |

这个Sql要怎么写才能保证性能啊?


举报
__JM_Joy__
发帖于1年前 1回/474阅
顶部