SQL 删除错误#1064

SQL Delete Erro #1064

我不知道为什么我的 DELETE sql 命令得到错误号 #1064。 我的删除 sql:

delete from nit.grades g where 
(select id_dep from nit.offers as oo,nit.subjects as s where s.id=oo.id_subject and g.id_offer=oo.id)
!=(select id_dep from nit.students as stu where g.id_student=stu.id);

但是这个 sql Select 与 where 子句相同。

select * from nit.grades g where 
(select id_dep from nit.offers as oo,nit.subjects as s where s.id=oo.id_subject and g.id_offer=oo.id)
!=(select id_dep from nit.students as stu where g.id_student=stu.id);

感谢您的帮助。 错误信息:

您用于删除语句的 table 别名的语法是错误的。
在子查询中甚至更多使用目标 table 而这在 MySql.
中是不允许的 相反,您应该使用联接。
从你的代码中,这就是我所理解的你想要的:

delete g 
from nit.grades g 
inner join nit.offers oo on g.id_offer = oo.id
inner join nit.subjects s on s.id = oo.id_subject
inner join nit.students st on g.id_student = st.id
where st.id_dep <> s.id_dep

WHERE 子句中,我不确定列 id_dep 是否正确限定,因为它们在您的代码中也没有限定。

如果这不是您想要的,那么使用您的 SELECT 查询(如您所说)作为对 table 的连接,前提是有一个像 id 这样的主键nit.grades:

delete g 
from nit.grades g 
inner join (
  <your select query here>
) t
on t.id = g.id