mysql 基于两个引用列更新列自连接(一种 vlookup)
mysql update column self join based on two reference columns (kind of vlookup)
希望有人能帮助我。我有一个包含以下数据的 table 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 |
+----+-----------+------+------+-------+
我希望查询更新 table 如:
+----+-----------+------+------+-----------+
| 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
与另一行的 Ref2
相同的行的 Date1
需要更新为 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
希望有人能帮助我。我有一个包含以下数据的 table 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 |
+----+-----------+------+------+-------+
我希望查询更新 table 如:
+----+-----------+------+------+-----------+
| 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
与另一行的 Ref2
相同的行的 Date1
需要更新为 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