2015-09-26 43 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

欢迎您! –