刷数据库面试试题时出现的错误和解决方法(一)
2018-02-02 21:46
417 查看
题目:把“SC”表中“叶平”老师教的课的成绩都更改为此课程的平均成绩:
环境:编辑工具:sqlyog 数据库:mysql
描述:此题的三个表:
course表(课程表)
sc表(成绩表)
teacher表(教师表)
开始的sql语句
sc.Cnum未知?不会吧,可能是这个查询语句套了很多层的缘故吧,思考了很久,换了很多方法:
环境:编辑工具:sqlyog 数据库:mysql
描述:此题的三个表:
course表(课程表)
sc表(成绩表)
teacher表(教师表)
开始的sql语句
UPDATE sc SET score = (SELECT AVG(sc_1.score) FROM sc sc_1 WHERE c.Cnum = sc_1.Cnum) WHERE Cnum IN(SELECT course.Cnum FROM course, teacher WHERE teacher.Tname = '叶平' AND teacher.Tnum = course.Tnum);出现错误:You can't specify target table 'sc' for update in FROM clause,意思就是在同一个语句中你不能先查询出sc表的某些值,再更新sc表,那么久迂回一下吧,创建一个子句,在子句中查询吧:
UPDATE sc SET score = (SELECT a.avgScore FROM (SELECT AVG(sc_1.score) avgScore FROM sc sc_1 WHERE c.Cnum = sc_1.Cnum) a) WHERE Cnum IN(SELECT course.Cnum FROM course, teacher WHERE teacher.Tname = '叶平' AND teacher.Tnum = course.Tnum);(这个问题只有在mysql中会出现)然后问题又来了:Unknown column 'sc.Cnum' in 'where clause'
sc.Cnum未知?不会吧,可能是这个查询语句套了很多层的缘故吧,思考了很久,换了很多方法:
UPDATE sc SET score = (SELECT a.avgScore FROM (SELECT AVG(sc_1.score) avgScore FROM sc sc_1,(SELECT * FROM sc )c WHERE c.Cnum = sc_1.Cnum) a) WHERE Cnum IN(SELECT course.Cnum FROM course, teacher WHERE teacher.Tname = '叶平' AND teacher.Tnum = course.Tnum);既然找不到sc表,那我就在前面把你这个表加上就好了。修改成功!
相关文章推荐
- 刷数据库面试试题时出现的错误和解决方法(一)
- SQL Server 2005 出现“此数据库没有有效所有者”错误的解决方法
- 关于dedecms近期频繁出现[错误警告:连接数据库失败..]错误的解决方法
- 数据关系图出现“此数据库没有有效所有者”错误的解决方法
- 数据库开发基本操作-安装Sql Server 2005出现“性能监视器计数器要求”错误解决方法
- 数据关系图出现“此数据库没有有效所有者”错误的解决方法
- Delphi使用BDE连接远程MS SQL SERVER 2000数据库时出现“Db-library network communciations layer not loaded.”错误的解决方法
- “getaddrinfo failed: 在数据库查找中出现一个不可恢复的错误”的解决方法
- sql server 数据库同步时如果出现 进程未能读取文件 因为发生操作系统错误 5。解决方法:
- Excel导入数据库出现“外部表不是预期的格式”错误的解决方法
- 用dw(dreamweaver)开发asp.net,连接数据库时出现“http错误500,服务器内部错误”的解决方法
- SQL Server 2005还原数据库时出现“不能选择文件或文件组XXX_log用于此操作……错误:3219……”的解决方法
- C# 用数据库读取Excel出现“定义了过多字段”错误的解决方法 .
- Delphi使用BDE连接远程MS SQL SERVER 2000数据库时出现“Db-library network communciations layer not loaded.”错误的解决方法
- 数据关系图出现“此数据库没有有效所有者”错误的解决方法
- Windows7下SQLServer2008导入数据库"附加数据库时出现错误"的解决方法
- SQL Server 2005 出现“此数据库没有有效所有者”错误的解决方法
- 将Ofbiz的数据库改为Oracle,运行时出现 ORA-01843: 无效的月份 错误 的原因及解决方法
- Excel导入数据库出现“外部表不是预期的格式”错误的解决方法
- 数据关系图出现“此数据库没有有效所有者”错误的解决方法