当多个记录中FieldA和FieldB相同时,我想标记一个表中的记录。选择当然很容易:
Select Count(*) from Table group by FieldA,FieldB having Count(*)>1
现在,我想进行更新,仅将这些记录的FieldA和FieldB设置为NULL。我认为这是某种“联接”,但这不是我非常熟悉的事物。有一些相当简单的方法可以做到这一点吗?
这是一种使用具有3个字段的临时表的方法:一个MIN(id)
字段,其中id
是中的唯一键或主键Table
,以及FieldA
和FieldB
:
CREATE TEMPORARY TABLE tmp_fix AS
SELECT MIN(id) AS id, FieldA, FieldB
FROM Table GROUP BY FieldA, FieldB having Count(*)>1;
然后,我们可以更新原始Table
设定所有重复FieldA, FieldB
到NULL
除了具有最低ID(这是我们在保存的tmp_fix
表):
UPDATE Table t
LEFT JOIN tmp_fix f ON t.FieldA = f.FieldA AND t.fieldB = f.FieldB
SET t.FieldA = NULL, t.fieldB = NULL
WHERE t.id <> f.id;
您可能需要先复制的副本Table
!
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句