Python 使用内部联接和where条件更新
我正在使用MySQL,创建了两个表,一个用于学生数据,一个用于出勤详细信息 考勤表具有学生Id的FK 这是考勤表 和学生资料表 我的问题: 我想根据学生ID更新考勤详情表,如下查询Python 使用内部联接和where条件更新,python,mysql,sql-update,Python,Mysql,Sql Update,我正在使用MySQL,创建了两个表,一个用于学生数据,一个用于出勤详细信息 考勤表具有学生Id的FK 这是考勤表 和学生资料表 我的问题: 我想根据学生ID更新考勤详情表,如下查询 sql = " UPDATE Attendance_table INNER JOIN students_data ON Attendance_table.ID=students_data.ID SET Attendance_table.ID=students_data.ID , Statues=%s , DateTi
sql = " UPDATE Attendance_table INNER JOIN students_data ON Attendance_table.ID=students_data.ID SET Attendance_table.ID=students_data.ID , Statues=%s , DateTime=%s , WHERE students_data.fname = %s"
val=(1,formatted_date,name)
mycursor.execute(sql,val)
mydb.commit()
我犯了个错误
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 'WHERE students_data.fname = 'ABN''
注意:我正在进行人脸识别项目,其中所有人脸都有一个预定义的名称,并将其与学生的数据进行比较
所以ABN这个名字是从脸上读出来的:
任何帮助或建议 在where之前使用了额外的逗号
DateTime=%s , WHERE students_data.fname = %s"
删除这个逗号。您的代码应该是:
sql = " UPDATE Attendance_table INNER JOIN students_data ON Attendance_table.ID=students_data.ID SET Attendance_table.ID=students_data.ID , Statues=%s , DateTime=%s WHERE students_data.fname = %s"
若要在考勤表中插入数据,请避免更新查询。您应该使用INSERT查询,而不需要加入查询
INSERT INTO Attendance_table (ID,Statues,DateTime) SELECT ID, %s as Statues, %s as DateTime FROM students_data WHERE students_data.fname = %s
为什么使用相同的ON子句和SET子句“Attention\u table.ID=students\u data.ID”?您的考勤表中是否存在要更新的ID?否,它将从Student table中获取ID您是否更改了问题?上面的文章描述了一个语法错误。未提及我们需要在中查看数据的未更新数据。@Albandry我为您添加了另一个答案。请检查,请不要喊叫。
sql = " UPDATE Attendance_table INNER JOIN students_data ON Attendance_table.ID=students_data.ID SET Attendance_table.ID=students_data.ID , Statues=%s , DateTime=%s WHERE students_data.fname = %s"
INSERT INTO Attendance_table (ID,Statues,DateTime) SELECT ID, %s as Statues, %s as DateTime FROM students_data WHERE students_data.fname = %s