社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  DATABASE

MySQL更新与加入

aforbes • 3 年前 • 1681 次点击  

我有一个包含联系人详细信息的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
文章 [ 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