MySQL标记重复记录

时间:2016-01-10 20:04:52

标签: mysql sql

我有一个名为customers的MYSQL表。其中一些在orderNumber上有重复的条目 我想在customers.working中输入所有这些记录中的DUPL值,而不仅仅是额外的副本。请注意,fieldA和fieldB中的值可能不重复,因此我需要标记所有值。

表客户(订单号'123重复)

orderNumber     fieldA      fieldB     working
123             vdss        fhghg
456             bhtf        fhbb
789             goyh        vhhgg
123             fhgh        fhfhf

期望,在更新()

之后
orderNumber     fieldA      fieldB     working
123             vdss        fhghg      DUPL
456             bhtf        fhbb 
789             goyh        vhhgg
123             fhgh        fhfhf      DUPL

选择完美无缺:

SELECT `orderNumber` 
FROM `customers` 
GROUP BY `orderNumber` 
HAVING COUNT(`orderNumber`) > 1

但更新没有。我有一个错误,MYSQL无法使用select来更新:

UPDATE `customers` set `customers.working` ='DUPL' where `customers.orderNumber` = 
(SELECT `orderNumber` 
FROM `customers` 
GROUP BY `orderNumber` 
HAVING COUNT(`orderNumber`) > 1);

我也尝试了这个,但是语法错误:

UPDATE `customers` SET `customers.working` ='DUPL' 
WHERE customers.orderNumber = INNER JOIN 
(SELECT `orderNumber` 
FROM `customers` 
GROUP BY `orderNumber` 
HAVING COUNT(`orderNumber`) > 1);

格式化这种格式的正确方法是什么?

2 个答案:

答案 0 :(得分:1)

您使用UPDATE `customers` c INNER JOIN (SELECT `ordernumber` FROM `customers` GROUP BY `ordernumber` HAVING Count(`ordernumber`) > 1) jn ON jn.ordernumber = c.ordernumber SET c.working = 'DUPL' 语句无效。试试这个:

height

答案 1 :(得分:1)

这是来自内存而未经过测试。由于你没有说出错误是什么,我猜测之前使用Mysql做类似的事情。如果错误说您无法更新并从同一个表中进行选择,则需要为select添加别名。如果没有,我认为你应该使用IN而不是连接。

未经测试但应该正常工作

UPDATE `customers`
SET    `customers.working` = 'DUPL'
WHERE  customers.ordernumber IN (SELECT t1.`ordernumber`
                                 FROM   (SELECT ordernumber
                                         FROM   `customers`
                                         GROUP  BY `ordernumber`
                                         HAVING Count(`ordernumber`) > 1) AS t1);

在移动设备上,希望格式正确,括号按正确的顺序等等):