基于两个参考列的mysql更新列自连接(类似于vlookup)

基于两个参考列的mysql更新列自连接(类似于vlookup),mysql,self-join,Mysql,Self Join,希望有人能帮我。我有一个包含以下数据的表X_Date: +----+-----------+------+------+-------+ | ID | Date1 | Ref1 | Ref2 | Date2 | +----+-----------+------+------+-------+ | 1 | 22/2/2015 | ABC | null | null | | 2 | 23/4/2015 | DEF | ABC | null | | 3 | 24/4/2015

希望有人能帮我。我有一个包含以下数据的表
X_Date

+----+-----------+------+------+-------+
| 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      |
+----+-----------+------+------+-----------+
因此,
Ref1
所在行的
Date1
与另一行的
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 
非常感谢您的帮助

谢谢

请尝试:

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