MySQL错误:Every derived table must have its own alias


派生表都必须有自己的别名

一般在多表查询时,会出现此错误。

因为,进行嵌套查询的时候子查询出来的的结果是作为一个派生表来进行上一级的查询的,所以子查询的结果必须要有一个别名,

把MySQL语句改成:select count(*) from (select * from ……) as total;

问题就解决,虽然只加了一个没有任何作用的别名total,但这个别名是必须的

select name1 name, java, jdbc, hibernate,total
from (select sc1.name name1, sc1.mark java
from student_course2 sc1
where sc1.course='java') as a,
(select sc2.name name2, sc2.mark jdbc
from student_course2 sc2
where sc2.course='jdbc') as b,
(select sc3.name name3, sc3.mark hibernate
from student_course2 sc3
where sc3.course='hibernate') as c,
(select sc4.name name4,sum(sc4.mark) total
from student_course2 sc4 group by sc4.name) as d
where name1=name2 and name2=name3 and name3=name4 order by total ASC; 

结果正确:

+----------+------+------+-----------+-------+
| name     | java | jdbc | hibernate | total |
+----------+------+------+-----------+-------+
| wangwu   |   40 |   30 |        20 |    90 |
| lisi     |   70 |   60 |        50 |   180 |
| zhangsan |  100 |   90 |        80 |   270 |
+----------+------+------+-----------+-------+
3 rows in set (0.02 sec)

Error Code: 1045. Access denied for user 'test'@'%' (using password: YES)


使用MySQL的select * into outfile ‘/tmp/rs.txt’ from tb_name来导出结果时遇到这个问题,

当前用户虽然拥有全部权限,但是file权限需要单独赋予,使用root用户执行:

grant file on *.* to test@localhost;

Error Code: 1093. You can't specify target table 'mytable' for update in FROM clause


在使用update或者delete语句时,在where条件里面加入的子查询导致的。

这时候可以将该表再嵌套一层,即“(select * from table) tt”,得出一个临时的结果集,
在这个结果集上操作就可以了。

delete from mytable where mytable.id not in
(SELECT tt.id FROM (SELECT * FROM mytable) tt where tt.siteid=22 );  

Error Code: 1175. You are using safe update mode and you tried to update a table without a WHERE that uses a KEY column To disable safe mode,toggle the option in Preferences -> SQL Editor and reconnect.


解决办法是关闭安全模式:

SET SQL_SAFE_UPDATES = 0;  

注意如果你是使用MySQL Workbench,还需要配置一下软件的首选项。
因为MySQL Workbench的默认的安全设置是不能批量更新表的。
当要执行的SQL语句是进行批量更新或者删除的时候就会提示这个错误。
解决方法如下:
打开Workbench的菜单[Edit]->[Preferences...]
切换到[SQL Editor]页面
把[Forbid UPDATE and DELETE statements without a WHERE clause (safe updates)]之前的对勾去掉
点击[OK]按钮

MySQL插入时使用当前时间


NOW()函数以`'YYYY-MM-DD HH:MM:SS'返回当前的日期时间,可以直接存到DATETIME字段中。

CURDATE()以’YYYY-MM-DD’的格式返回今天的日期,可以直接存到DATE字段中。
CURTIME()以’HH:MM:SS’的格式返回当前的时间,可以直接存到TIME字段中。

insert into table (id ,time) values('1',NOW() )

Error Code: 1100. Table 'mytable' was not locked with LOCK TABLES


我在插入前执行了

LOCK TABLES `mytable` WRITE;

重新解锁即可:

UNLOCK TABLES;

  

MySQL应用的异常记录的更多相关文章

  1. MySQL插入数据异常

    MySQL插入数据异常 1.错误如下: com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException:Dupli ...

  2. mysql同步复制异常的常见操作-传统复制方式

    mysql同步复制异常的常见操作-传统复制方式 一.传统复制方式是基于非gtid的,常见的错误有1032和1062 1032是主键冲突,1062是从库中没有找到对应的记录. 可以查看出现错误的binl ...

  3. Selenium碰到的异常记录

    .markdown-preview:not([data-use-github-style]) { padding: 2em; font-size: 1.2em; color: rgb(171, 178 ...

  4. MYSQL删除表的记录后如何使ID从1开始

    MYSQL删除表的记录后如何使ID从1开始 MYSQL删除表的记录后如何使ID从1开始 http://hi.baidu.com/289766516/blog/item/a3f85500556e2c09 ...

  5. mysql datetime查询异常

    mysql datetime查询异常 异常:Value '0000-00-00 00:00:00' can not be represented as java.sql.Timestamp (2011 ...

  6. mysql防止重复插入记录方法总结

    mysql防止重复插入记录方法总结 防止mysql重复插入记录的方法有很多种,常用的是ignore,Replace,ON DUPLICATE KEY UPDATE,当然我们也可以在php中加以判断了. ...

  7. navicat MySQL 只有1000条记录

    /*************************************************************************** * navicat MySQL 只有1000条 ...

  8. mysql 查询一条记录的下一条和上一条记录

    如果ID是主键或者有索引,可以直接查找: 方法一: 查询上一条记录的SQL语句(如果有其他的查询条件记得加上other_conditions以免出现不必要的错误): select * from tab ...

  9. 阿里云ECS(linux)磁盘满触发的mysql的表异常修复案例

    阿里云ECS(linux)磁盘满触发的mysql的表异常修复案例 阿里云技术支持:完颜镇江 问题现象: 磁盘空间满了,第一想到的就是删除无用的服务日志或者升级数据盘. 通常是使用du –sh去分析目录 ...

随机推荐

  1. Android学习笔记(二十一)——实战:程序数据共享

    //此系列博文是<第一行Android代码>的学习笔记,如有错漏,欢迎指正! 我们继续在Database项目的基础上继续开发,通过内容提供器来给它加入外部访问接口.首先将 MyDataba ...

  2. pro*c添加SQLCHECK后编译报错PLS-S-00201

    如果在pro*c中调用数据库了里的函数,就需要在proc的cfg配置文件中添加一行: SQLCHECK=SEMANTICS 但是添加之后又会出现PLS-S-00201错误,原因在与添加SQLCHECK ...

  3. CI控制器中设置在其它方法中可用的变量

    开发过程中,某些变量可能需要被控制器中的其它方法所调用,这个变量改怎么设置呢? 其实可以用ci的$this->load->vars($array);和$this->load-> ...

  4. flask路由和视图和cookie

    什么是路由 """ 客户端(例如web浏览器)把请求发送给Web服务器,Web服务器再把请求发送给Flask程序实例. 程序实例需要知道对每个URL请求运行那些代码,所以 ...

  5. django debug toolbar jquery加载配置

    默认加载谷歌cdn的jquery: 显然国内是会悲剧的. 破解方案: 在settings.py中增加以下配置: DEBUG_TOOLBAR_CONFIG = {"JQUERY_URL&quo ...

  6. ios7 上 UIActivity 用的image

    在ios8 上UIActivityCategoryShare类型的UIActivity的图标支持彩色图片了,但是在ios7上不行,ios8上的 UIActivityCategoryAction类型也不 ...

  7. windows hosts

    2015年6月29日 11:10:56 星期一 windows 的 hosts 文件生效机制 以最前边的为准, 重复的硬解析只有第一次出现的地方生效

  8. MySQL SQL优化之in与range查询【转】

    本文来自:http://myrock.github.io/ 首先我们来说下in()这种方式的查询.在<高性能MySQL>里面提及用in这种方式可以有效的替代一定的range查询,提升查询效 ...

  9. Win8环境WPF打开和关闭软键盘

    代码如下: public class KeyBoardHelper { #region 键盘控制 /// <summary> /// 显示键盘 /// </summary> p ...

  10. C#一维数组

    数组:相同数据类型的元素按照一定的顺序进行排列生成的集合(一组数据)一维数组:int [] array=new int[5];int[] array = new int[] {1,2,3,4,5 }; ...