You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修正PyMySQL中UPDATE语句触发的1093数据库错误?

解决MySQL UPDATE语句1093错误

这个错误是MySQL的内置限制导致的:当你更新某个表时,不能在WHERE子句的子查询中直接引用这个表作为FROM数据源。要解决这个问题,只需要把获取最大time_created的子查询包装成一个派生表,让MySQL先执行这个派生表的查询,再用结果来匹配更新条件。

修正后的完整代码如下:

import mysql.connector

mydb = mysql.connector.connect(
    host="*****",
    user="****",
    password="****",
    database="database",
    port="****"
)
mycursor = mydb.cursor()
mycursor.execute("""
UPDATE table1
SET BUGS=%s, CODE_SMELLS=%s, VULNERABILITIES=%s
WHERE username = %s
AND time_created = (
    SELECT max_time 
    FROM (SELECT MAX(time_created) AS max_time FROM table1) AS temp_table
)
""", (bugs, code_smells, vulnerabilities, username))
mydb.commit()
mydb.close()

核心修改点是把原来的直接子查询改成嵌套的派生表查询:

(SELECT max_time FROM (SELECT MAX(time_created) AS max_time FROM table1) AS temp_table)

通过新增一层子查询生成临时表temp_table,MySQL会先计算这个临时表的结果,再用于UPDATE的条件判断,就不会触发1093错误了。

内容的提问来源于stack exchange,提问作者Sizzler

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 06:30:55