mysql更新列基于两个引用列的自连接(类型为vlookup)

时间:2015-09-26 09:48:11

标签: 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 | 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 

任何帮助都非常赞赏!

谢谢!

1 个答案:

答案 0 :(得分:2)

请尝试:

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