Py学习  »  DATABASE

MySQL更新与加入

aforbes • 3 年前 • 1424 次点击  

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

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

我修改了教程示例,可以通过以下查询正确地“选择”重复的行:

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年的今天,您的SQL语法出现错误;查看与您的MySQL服务器版本对应的手册,以获取正确的语法 从新_引出_test2作为t1
内部连接新的_leads_test2 AS t2
在t1上。PHONE1=t2在3号线

谁能帮我一下吗?

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/133251
 
1424 次点击  
文章 [ 2 ]  |  最新文章 3 年前
Paul T.
Reply   •   1 楼
Paul T.    3 年前

您的示例是SQL Server语法,而不是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
D-Shih
Reply   •   2 楼
D-Shih    3 年前

我们可以把 SET 之后 INNER JOIN 因为 UPDATE Statement , table_reference 使用前 设置

顺便说一句,也许你不需要 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