2015-09-26 48 views
0

希望有人能幫助我。我有一個表X_Date數據如下:mysql更新列自我連接基於兩個參考列(種類的查找)

+----+-----------+------+------+-------+ 
| ID | Date1 | Ref1 | Ref2 | Date2 | 
+----+-----------+------+------+-------+ 
| 1 | 22/2/2015 | ABC | null | null | 
| 2 | 23/4/2015 | DEF | ABC | null | 
| 3 | 24/4/2015 | GHI | null | null | 
+----+-----------+------+------+-------+ 

我想通過查詢更新如表:

+----+-----------+------+------+-----------+ 
| ID | Date1 | Ref1 | Ref2 | Date2 | 
+----+-----------+------+------+-----------+ 
| 1 | 22/2/2015 | ABC | null | null  | 
| 2 | 23/4/2015 | DEF | ABC | 22/2/2015 | 
| 3 | 24/4/2015 | GHI | null | null  | 
+----+-----------+------+------+-----------+ 

所以該行的Date1其中Ref1相同Ref2從其他行需要更新爲Date2列的值

我嘗試了一些東西,但是我對mysql很陌生,幾乎知道我確實在做這個錯誤:

UPDATE 
    `X_Data` AS t1 
CROSS JOIN (
    SELECT DISTINCT 
    Date1, Ref1, Ref2, Date2 
    FROM 
    `X_Data` 
) AS t2 
USING (Ref2) 
SET 
    t1.Date2 = t2.Date1 

任何幫助非常感謝!

謝謝!

回答

2

請嘗試:

UPDATE 
    `X_Data` t1 
INNER JOIN 
    `X_Data` t2 
ON t1.Ref2 = t2.Ref1 
SET 
    t1.Date2 = t2.Date1 
+0

是的!這樣可行。非常感謝 – Peter

+0

歡迎您! –