开发者社区> 问答> 正文

订单的操作记录表,每个订单各取最后一条记录,这个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要怎么写才能保证性能啊?

展开
收起
kun坤 2020-06-09 10:44:37 790 0
1 条回答
写回答
取消 提交回答
  • select * from order_operation where id in (SELECT max(id) from order_operation GROUP BY order_id )
    临时解决下 ######谢谢!

    2020-06-09 10:44:43
    赞同 展开评论 打赏
问答分类:
SQL
问答地址:
问答排行榜
最热
最新

相关电子书

更多
SQL Server 2017 立即下载
GeoMesa on Spark SQL 立即下载
原生SQL on Hadoop引擎- Apache HAWQ 2.x最新技术解密malili 立即下载