MySql删除Delete 注意问题---不可给表起别名

在写MySql语句的时候出现了一个问题,Delete语句由于一些原因无法删除。
先创建一个演示的数据库,数据库的架构设计图如下:MySql删除Delete 注意问题---不可给表起别名_第1张图片
实现:删除一个名字叫“小明”的学生的数学成绩

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时不要给表起别名

你可能感兴趣的:(数据库)