MySQL中如何删除同一行内指定列值全部重复的数据行?
如何删除表中a到g列值全部相同的数据行
你之前的SQL逻辑方向错了——那是用来删除和其他行a-g列重复的行,但你实际要删的是自身a到g列的值完全一致的行,这是两个完全不同的需求。
正确实现方式
方法一:直接列值相等判断
这种写法直观易懂,直接检查每一列与下一列是否相等:
DELETE FROM survey WHERE a = b AND b = c AND c = d AND d = e AND e = f AND f = g;
方法二:用极值函数简化语句
如果涉及的列比较多,用GREATEST和LEAST函数会更简洁——当所有列值相同时,最大值必然等于最小值:
DELETE FROM survey WHERE GREATEST(a, b, c, d, e, f, g) = LEAST(a, b, c, d, e, f, g);
为什么你之前的SQL无效
你写的INNER JOIN逻辑是:找到存在另一个ID更小的行,且两行的a-g列完全匹配,然后删除ID更大的那行。但你的表中ID691的a-g列全为10,没有其他行和它的a-g列完全一致,所以这个JOIN根本匹配不到任何数据,自然无法删除目标行。
内容的提问来源于stack exchange,提问作者mookmook
相关产品推荐
相关产品推荐

