Mysql错误Every derived table must have its own alias解决方法

mysql执行多表查询时报错:

[SQL] SELECT * from
(
select e.account from employee e
UNION
SELECT u.account from `user` u
UNION
SELECT a.account from agent a
)
[Err] 1248 - Every derived table must have its own alias

这句话的意思是每个派生出来的表必须有一个自己的别名

一般是在多表查询或者子查询的时候会出现这个错误,因为在嵌套查询中,子查询的结果是作为一个派生表给上一级进行查询,所以子查询的结果必须有一个别名。

上面的例子中,把查询语句修改一下:

SELECT * from
(
select e.account from employee e
UNION
SELECT u.account from `user` u
UNION
SELECT a.account from agent a
)as total

如上所示,在子查询的后面增加一句 as total,相当于给子查询的结果集派生表取别名为total,问题就解决了。

(0)

相关推荐

  • mysql中错误:1093-You can’t specify target table for update in FROM clause的解决方法

    发现问题 最近在处理一些数据库中数据的时候,写了下面的这一条sql语句: UPDATE f_student SET school_id = 0 WHERE id > ( SELECT id FROM f_student WHERE school_id = M LIMIT 1 ) AND id < ( ( SELECT id FROM f_student WHERE school_id = M LIMIT 1 ) + N ) 上面的sql是想将某个区间的数据进行修改,但是放到测试环境下一跑,报下

  • MySql插入数据成功但是报[Err] 1055错误的解决方案

    1.问题: 这两天做insert操作,mysql版本是5.7,insert后虽然成功了,但是会报一个[Err] 1055的错误.具体如下: 2.解决方案: linux环境下,vim到my.cnf,添加如下语句: sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES 最后保存退出,重启mysql 3.测试 看一下是否解决 可以看到已经没有error了. 总结 以上所述是小编给大家介绍的MySql插入数据成功但是报[Err] 1055错误的解决方案,

  • MySQL错误代码1862 your password has expired的解决方法

    博主一两个月没用上mysql 今天就遇见了这个问题我的解决方法是这样的,大家也可以参考以下. 1.win+R,运行里输入services.msc打开服务,关闭MySQL57服务(57是我的MySQL Server的版本号) 2.右键属性,等下需要在cmd输入这条相仿的命令 运行中输入cmd,cd C:/Appserv/MySQL//bin回车进入bin目录下面,然后 mysqld --defaults-file="C:/Appserv/MySQL/my.ini"  --skip-gra

  • Windows安装MySQL8.0.16 的步骤及出现错误问题解决方法

    一.前言: mysql8之后想比起之前常用的版本改动还是挺大的,因为刚从安装接触,就先从基本的说起.现在的mysql8安装只能采用解压配置版,像以前老版本的傻瓜式安装将不复存在.其实mysql8了解如何安装之后也不是特别麻烦, 现罗列一下注意点: 1,mysql8 之后并不需要my.ini,会自动的生成data文件夹在解压之后的文件,端口默认3306,.若有这个文件,则初始化mysql不成功. 2,自己若新建并设置了my.ini 文件,有data文件的话,在初始化之前要删除.然后再初始化 3,在

  • mysql出现提示错误10061的解决方法

    本文为大家分享了mysql出现Can't connect to MySQL server on 'localhost' (10061)的解决方法,供大家参考,具体内容如下 网上搜索方法一: 今天把mysql数据库拷贝到另外一台机上,结果连不上,报"Can't connect to MySQL server on 'localhost' (10061)"错误 到网上search,发现一篇文章很好,两种方法都能解决此问题 1.删除my.ini(在C:\windows\下),重新运行winm

  • navicat连接mysql时出现1045错误的解决方法

    navicat for MySQL 连接本地数据库出现1045错误 如下图: 查了很多资料,意思是说mysql没有授权远程连接,也就是权限不够: 解决方法: 1.首先打开命令行:开始->运行->cmd. 2.先进入电脑安装的mysql的bin目录下,因为我用的是phpstudy,mysql安装在D盘,如果你的是C盘 就不用执行第一个命令 D: cd D:\phpStudy\MySQL\bin mysql -u root mysql mysql> UPDATE user SET Passw

  • mysql中异常错误ERROR:2002的解决方法

    最近在启动mysql 报错,错误提示如下: ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2) 排查过程 1.先查看 /etc/rc.d/init.d/mysqld status 看看mysql是否已经启动. 另外看看是不是权限问题. 2.确定你的mysql.sock是不是在那个位置, mysql -u 你的mysql用户名 -p -S /va

  • Mysql错误Every derived table must have its own alias解决方法

    mysql执行多表查询时报错: [SQL] SELECT * from ( select e.account from employee e UNION SELECT u.account from `user` u UNION SELECT a.account from agent a ) [Err] 1248 - Every derived table must have its own alias 这句话的意思是每个派生出来的表必须有一个自己的别名 一般是在多表查询或者子查询的时候会出现这个

  • mysql “ Every derived table must have its own alias”出现错误解决办法

    mysql  Every derived table must have its own alias错误解决办法 Every derived table must have its own alias 这句话的意思是说每个派生出来的表都必须有一个自己的别名 一般在多表查询时,会出现此错误. 因为,进行嵌套查询的时候子查询出来的的结果是作为一个派生表来进行上一级的查询的,所以子查询的结果必须要有一个别名 把MySQL语句改成:select count(*) from (select * from

  • MYSQL错误:Can’t open file: ‘×××.MYI’ (errno: 145)修复方法

    减少此类问题发生的办法就是尽量减少服务器无故断电,关闭服务器时,最后先手动关闭mysql数据库. 下面看看这个问题: Can't open file: '×××.MYI' (errno: 145),这个错误一般就是你的数据库表文件损坏造成的,造成的原因大概是你把数据库文件挪来挪去的结果,当然不排除其他原因啊. 具体数据库出现错误的提示代码是: Invalid SQL: -- MySQL 错误!: 1016 (Can't open file: '×××.MYI' (errno: 145)) 解决这

  • Mysql 报Row size too large 65535 的原因及解决方法

    报错信息:Row size too large. The maximum row size for the used table type, not counting BLOBs, is 65535 向mysql的表插件一个字段 类型为text时,或修改一个字段类型为text时,报出上面的错误.其实我对这个错误的原因理解也不是很深,给出一些我查到的解释吧 大意是数据表中有一个设定长度为64K的字段索引,当表中字段(不知道是字段名字还是什么)不能超过这个长度,65,535所说明的是针对的是整个表的

  • MySQL的自增ID(主键) 用完了的解决方法

    在 MySQL 中用很多类型的自增 ID,每个自增 ID 都设置了初始值.一般情况下初始值都是从 0 开始,然后按照一定的步长增加(一般是自增 1).一般情况下,我们都是用int(11)来作为数据表的自增 ID,在 MySQL 中只要定义了这个数的字节长度,那么就会有上限. MySQL的自增ID(主键) 用完了,怎么办? 如果用 int unsigned (int,4个字节 ), 我们可以算下最大当前声明的自增ID最大是多少,由于这里定义的是 int unsigned,所以最大可以达到2的32幂

  • mysql索引过长Specialed key was too long的解决方法

    目录 解决办法一 解决办法二 在创建要给表的时候遇到一个有意思的问题,提示Specified key was too long; max key length is 767 bytes,从描述上来看,是Key太长,超过了指定的 767字节限制 下面是产生问题的表结构 CREATE TABLE `test_table` ( `id` int(11) unsigned NOT NULL AUTO_INCREMENT, `name` varchar(1000) NOT NULL DEFAULT '',

  • mysql 5.7更改数据库的数据存储位置的解决方法

    随着MySQL数据库存储的数据逐渐变大,已经将原来的存储数据的空间占满了,导致mysql已经链接不上了.因此,必须要给存放的数据换个地方了.下面是操作过程中的一些步骤.记下来,以后日后查看. 1.修改mysql数据存放的目录 要修改两个地方,其一是修改/etc/my.cnf文件中的datadir.默认情况下: datadir=/var/lib/mysql 因为我的/data/目录比较大,所以将其改为: datadir=/data/mysql/ 还要修改/etc/init.d/mysqld文件,将

  • Mysql挂掉后无法重启报pid文件丢失的解决方法

    阿里云单核2G的配置挂着两个企业网站,访问量一般.最近每天几乎都会出现网站打不开显示数据库链接失败的问题. 多方寻求原因发现,mysql的pid文件缺失,并无法重启自建,后来也看了其他帖子说关闭日志什么的未果,查看系统日志发现,是因为内存满了导致mysql进程被杀,然后就一直挂起状态. Sep 25 11:33:48 iZ28jcqqr7lZ kernel: Out of memory: Kill process 23201 (mysqld) score 53 or sacrifice chil

  • MySQL数据中很多换行符和回车符的解决方法

    发现问题 今天一大早客户给我打电话:"小陈儿,昨晚我往数据库导了几十万条数据,然后在web界面很多都搜不到,你们系统做的啥玩意儿啊?这么多BUG!得啵得啵得-"(省略2000字)又习惯性的喷了一遍我们这个项目做的辣鸡~~ 得得得,客户随便喷,我就当吃了个早饭了

  • MYSQL时区导致时间差了14或13小时的解决方法

    目录 CST 时区 排错过程 解决方案 MySQL时区有问题(相差13或14小时) p>我一般使用MYSQL定义字段类型时,一般使用TIMESTAMP时间戳来定义创建时间与更新时间,并将其定义为默认值为CURRENT_TIME,但是由于场景特殊,现在我需要将一个任务的开始时间与结束时间记录,并写入数据库,那么我的开始时间戳与结束时间戳则不应该是使用数据库自带的默认值的,而是应该使用我使用java代码里面传进去的LocalDateTime.now()方法.但是插入后数据我发现有问题,插入的时间比我

随机推荐