基于两个参考列的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