【发布时间】:2020-02-25 12:24:40
【问题描述】:
我正在尝试使用 where (NOT IN ) 子句将数据插入表中,以避免插入重复数据
nvalue = data.value
nature = data.type
sid = data.Id
cursor.execute("INSERT INTO TABLE_NAME1 (ID, FieldName, FieldValue) VALUES (?, ?, ?) WHERE sid NOT IN (SELECT ID FROM TABLE_NAME1 )", (sid, nature, nvalue)
connection.commit()
错误:
pyodbc.ProgrammingError: ('42000', "[42000] [Microsoft][ODBC Driver 13 for SQL Server][SQL Server]Incorrect syntax near the keyword 'WHERE'. (156) (SQLExecDirectW); [42000] [Microsoft][ODBC Driver 13 for SQL Server][SQL Server]Statement(s) could not be prepared. (8180)")
还尝试将 where 子句中的“sid”替换为“?” :
cursor.execute("INSERT INTO TABLE_NAME1 (ID, FieldName, FieldValue) VALUES (?, ?, ?) WHERE ? NOT IN (SELECT Id FROM TABLE_NAME1)", (sid, nature, nvalue, sid)
【问题讨论】:
-
我猜你拼错了你传递的参数 -
id而不是sid -
Id 是列名,sid 是包含数据的变量名
-
是的,在您的查询中它是相反的 -
WHERE sid,然后参数是id...