MySQL:删除Component表同页面同国家重复记录,保留最新条目
删除Component表重复记录的方案
要清理Component表中同一Page、相同country值的重复记录,只保留每组里createdAt最新的那条,可以用以下步骤实现:
核心SQL语句
WITH latest_component_ids AS ( SELECT c.id FROM Component c JOIN PageComponent pc ON c.id = pc.componentId JOIN Page p ON pc.pageId = p.id GROUP BY p.id, c.country HAVING c.createdAt = MAX(c.createdAt) ) DELETE FROM Component WHERE id NOT IN (SELECT id FROM latest_component_ids);
逻辑说明
- 通过CTE
latest_component_ids关联Page、PageComponent和Component三张表,按页面ID和country分组,筛选出每组中createdAt时间最晚的Component ID; - 利用DELETE语句移除所有不在保留列表内的Component记录,完成去重操作。
内容的提问来源于stack exchange,提问作者Robokop
相关产品推荐
相关产品推荐

