在写MySql语句的时候出现了一个问题,Delete语句由于一些原因无法删除。
先创建一个演示的数据库,数据库的架构设计图如下:
实现:删除一个名字叫“小明”的学生的数学成绩
DELETE FROM sc s WHERE s.`sid`=(SELECT sid FROM student WHERE sname='小明') AND s.`cid`=(SELECT cid FROM course WHERE cname = '语文');
运行后mysql报错:
意思是sql语句存在问题,大致位置也给出了!
查询:delete FROM sc s WHERE s.`sid`=(SELECT sid FROM student WHERE sname='小明') AND s.`cid`=(SELECT cid FROM course WHERE cname = ...错误代码: 1064
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 's WHERE s.`sid`=(SELECT sid FROM student WHERE sname='小明') AND s.`cid`=(SELE' at line 1
执行耗时 : 0 sec
传送时间 : 0 sec
总耗时 : 0 sec
但是将sql语句改成查询:
SELECT * FROM sc s WHERE s.`sid`=(SELECT sid FROM student WHERE sname='小明') AND s.`cid`=(SELECT cid FROM course WHERE cname = '语文');
可以正确的执行:
重新sql语句,去掉给表起的别名:
DELETE FROM sc WHERE sid = (SELECT sid FROM student WHERE sname='小明') AND cid = (SELECT cid FROM course WHERE cname = '语文');
可以正确执行。
注意:在执行mysql删除Delete时不要给表起别名