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 Statement、table_reference
在SET
之前使用
顺便说一句,也许你可能不需要 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
我有一个包含详细联系信息的 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 Statement、table_reference
在SET
顺便说一句,也许你可能不需要 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