You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MySQL Error Code 1093求助:删除语句无法指定目标表

解决MySQL Error Code: 1093 删除重复记录问题

错误原因

MySQL不允许在DELETE/UPDATE语句的FROM子句中直接引用要修改的目标表,这是出于避免数据不一致的设计限制,所以你原来的语句会触发You can't specify target table 'cars' for update in FROM clause错误。

解决方案1:用派生表包装子查询

把原来的子查询包装成一个派生表(临时结果集),让MySQL将其视为独立表,就能绕过限制。修改后的删除语句如下:

DELETE FROM cars 
WHERE model_id NOT IN (
    SELECT min_id FROM (
        SELECT MIN(model_id) AS min_id 
        FROM cars 
        GROUP BY model_name, brand
    ) AS temp
);

解决方案2:用JOIN方式删除(更高效)

对于大数据量的表,JOIN方式的删除性能更优,逻辑是关联表自身,保留每个分组的最小model_id,删除其余记录:

DELETE c1 
FROM cars c1
JOIN cars c2 
ON c1.model_name = c2.model_name 
AND c1.brand = c2.brand 
AND c1.model_id > c2.model_id;

验证效果

执行完删除语句后,查询表数据:

SELECT * FROM cars;

会得到去重后的结果:

model_idmodel_namecolorbrand
1LeafBlackNissan
3Model SBlackTesla
4Model XWhiteTesla
5Ioniq 5BlackHyundai
7Ioniq 6WhiteHyundai

内容的提问来源于stack exchange,提问作者Dileep Jetty

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 03:42:09