2014-05-13 63 views
1

我有一個表如下重複條目...更新在同一個表

Initial Table

我想這個表選擇性更新。

如果ID有「重複項」和身份證的信息爲空,則NULL元組的服務應在非空元組的FOR_ID領域進行更新..

對於如: - 660060110是一個重複的條目,並且具有SERVICE - > NM的條目具有INFO作爲NULL。所以,具有SERVICE - > IS的元組的FOR_ID應該成爲NM。雖然660074540具有重複的條目但沒有NULL INFO。所以不會發生更新。

決賽桌應該類似於如下:

Final Table

請幫我在這。謝謝。

回答

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

+1

它是一個簡潔,精確,美觀的解決方案。非常感謝... :) – StackAddict