【发布时间】:2016-05-31 21:12:49
【问题描述】:
我有一个包含 3 个表(student、class 和 student_class)的数据库。在类表中有一些类的删除时间设置为 NOT NULL。我想将这些班级的学生的删除时间更新为当前时间。
短表架构如下:
学生(ID,姓名,...,删除时间)
类(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' 的目标,又作为数据的单独源,是否有任何查询?
【问题讨论】:
-
您是否尝试从“FROM”子句中删除学生?
-
我在任何地方都看不到
tbl_student,而且您缺少右括号。目标数据库系统是什么(SQL Server?MySql?Oracle? -
如果您使用的是 MySQL,它可能与 stackoverflow.com/questions/45494 重复
-
可能是 MySQL 的愚蠢限制,您无法引用正在更新的表。