更新计数> 1的表中的记录

时间:2016-02-27 18:24:31

标签: mysql count sql-update

我想在FieldA和FieldB相同的多条记录中标记表中的记录。选择很容易:

Select Count(*) from Table group by FieldA,FieldB having Count(*)>1

现在我想进行更新,并仅为这些记录将FieldA和FieldB设置为NULL。我认为这是某种加入'但那不是我非常熟悉的东西。有一些相当简单的方法吗?

1 个答案:

答案 0 :(得分:1)

以下是一种方法,使用包含3个字段的临时表:MIN(id)字段,其中idTable中的唯一或主键,{{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;