一、背景描述
数据库有订单表和订单明细表两张表,订单表与订单明细表的关系为一对多,通过订单ID作为外键进行关联,订单表的订单号字段本应设计成唯一约束,但由于数据库约束未在表里体现,并且由于业务操作的一些原因,导致订单表里出现重复的订单号,并且这些订单记录下面都关联了货品,现需要将重复的订单记录删除,同一个订单号只保留一条记录,其余被删除的订单表记录下面的明细记录全部移到保留的那条记录上面。表结构如下所示(表结构有做简化):
订单表t_order:
CREATE TABLE `t_order` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`order_no` varchar(20) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=13 DEFAULT CHARSET=utf8;
订单明细表t_order_detail:
CREATE TABLE `t_order_detail` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`order_id` int(11) DEFAULT NULL,
`sku` varchar(50) DEFAULT NULL,
`qty` int(9) DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `order_id_fk` (`order_id`),

本文介绍如何处理数据库中因约束缺失导致的订单表重复数据问题。在一对多关系的订单表和订单明细表中,需删除重复订单并迁移其明细记录。通过查询保留每个订单号的第一个记录,实现删除重复项并确保明细数据正确关联。
最低0.47元/天 解锁文章
777

被折叠的 条评论
为什么被折叠?



