更新同一个表中的重复条目

时间:2014-05-13 04:06:12

标签: mysql sql

我有一张表如下......

Initial Table

我想要对此表进行选择性更新。

如果ID具有“重复条目”且ID的INFO为NULL,则应在NON-NULL元组的FOR_ID字段中更新NULL元组的SERVICE ..

例如: - 660060110是重复条目,而一个是SERVICE - > NM将INFO视为NULL。那么,带有SERVICE的元组的FOR_ID - > IS应该成为NM。虽然660074540具有重复条目但没有NULL INFO。因此,不会发生任何更新。

决赛桌应如下所示:

Final Table

请帮我解决这个问题。感谢。

1 个答案:

答案 0 :(得分:2)

这应该这样做 - 通过将要更新的预期行表(即INFO is NOT NULL)的表连接到要在公共域上引用的行的派生表(即INFO is NULL)键,ID

UPDATE MyTable mt
   INNER JOIN
   (
     SELECT ID, `SERVICE`
     FROM MyTable
     WHERE INFO IS NULL
   ) x
   ON x.ID = mt.ID 
     AND INFO IS NOT NULL
   SET mt.FOR_ID = x.`SERVICE`

SqlFiddle here