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
我不知道为什么我的 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