我有一个包含3个表(student,class和student_class)的数据库。在类表中有一些类的删除时间设置为NOT NULL。我想更新这些课程的学生到当前时间的删除时间。SQL:我的查询出了什么问题
短表架构如下:
学生(ID,姓名,...,delete_time)
类(ID,姓名,...,delete_time)
student_class(ID,studentId,CLASSID)
查询我想:
UPDATE student SET delete_time = now() WHERE id IN (
SELECT student.id FROM student, student_class,class WHERE
student.id = student_class.studentId AND
student_class.classId= class.id AND
class.delete_time IS NOT NULL
,但它没有工作,我得到了一个错误说:
#1093 - 表'tbl_student'被指定两次,既作为'UPDATE'的目标,也作为数据的独立源,是否有任何查询?
update student s join student_class sc on s.id = sc.studentid join class c on c.id = sc.classid set s.delete_time = now() where c.delete_time is not null;
注:
您是否尝试从“FROM”子句中删除学生? –
我在任何地方都看不到'tbl_student',而且你错过了一个右括号。什么是目标数据库系统(SQL Server?MySql?Oracle?) –
如果您使用的是MySQL,它可能是http://stackoverflow.com/questions/45494 –