MySQL 更新并加入

MySQL Update & Join

我有一个包含详细联系信息的 MySQL table,我需要将列“PHONE1”的重复项标记到另一个名为“DUPLICATE”的标记列(忽略第一行,原始行).

我找到了一个 SQL 教程,其中包含一个 SQL 查询示例,几乎完全符合我的要求:https://www.sqlservertutorial.net/sql-server-basics/sql-server-update-join/.

我修改了教程示例,我可以使用以下查询正确地“SELECT”重复行:

SELECT t1.ID, t1.`Contact Name`, t1.PHONE1
FROM new_leads_test2 AS t1
INNER JOIN new_leads_test2 AS t2
ON (t1.PHONE1 = t2.PHONE1
AND t1.ID > t2.ID)

此“SELECT”查询 100% 有效,但是当我尝试更改此查询以实际更新行(根据教程)时,我收到 SQL 语法错误。这是我生成错误的查询:

UPDATE t1
SET t1.duplicate = t2.ID
FROM new_leads_test2 AS t1
INNER JOIN new_leads_test2 AS t2
ON (t1.PHONE1 = t2.PHONE1
AND t1.ID > t2.ID)

这会导致 SQL 错误:

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'FROM new_leads_test2 AS t1
INNER JOIN new_leads_test2 AS t2
ON t1.PHONE1 = t2.' at line 3

谁能帮我解决这个问题?

我们可能会将SET放在INNER JOIN之后,因为UPDATE Statementtable_referenceSET

之前使用

顺便说一句,也许你可能不需要 FROM

UPDATE [LOW_PRIORITY] [IGNORE] table_reference
SET assignment_list
[WHERE where_condition]
[ORDER BY ...]
[LIMIT row_count]

所以我们可以像下面这样使用。

UPDATE new_leads_test2 AS t1
INNER JOIN new_leads_test2 AS t2
ON (t1.PHONE1 = t2.PHONE1
AND t1.ID > t2.ID)
SET t1.duplicate = t2.ID

您的示例是 SQL 服务器语法,而不是 MySQL。

试试:

UPDATE new_leads_test2 t1
 INNER JOIN new_leads_test2 t2
    ON (t1.PHONE1 = t2.PHONE1 AND t1.ID > t2.ID)
   SET t1.duplicate = t2.ID