我想在FieldA和FieldB相同的多条记录中标记表中的记录。选择很容易:
Select Count(*) from Table group by FieldA,FieldB having Count(*)>1
现在我想进行更新,并仅为这些记录将FieldA和FieldB设置为NULL。我认为这是某种加入'但那不是我非常熟悉的东西。有一些相当简单的方法吗?
答案 0 :(得分:1)
以下是一种方法,使用包含3个字段的临时表:MIN(id)
字段,其中id
是Table
中的唯一或主键,{{1} }和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
,但id最低的那个(我们保存在NULL
表中)除外:
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;
!