mysql 报错
2015-11-20 13:11
701 查看
mysql中You can't specify target table <tbl> for update in FROM clause错误的意思是说,不能先select出同一表中的某些值,再update这个表(在同一语句中)。 例如下面这个sql:
delete from tbl where id in
(
select max(id) from tbl a where EXISTS
(
select 1 from tbl b where a.tac=b.tac group by tac HAVING count(1)>1
)
group by tac
)
改写成下面就行了:
delete from tbl where id in
(
select a.id from
(
select max(id) id from tbl a where EXISTS
(
select 1 from tbl b where a.tac=b.tac group by tac HAVING count(1)>1
)
group by tac
) a
)
也就是说将select出的结果再通过中间表select一遍,这样就规避了错误。注意,这个问题只出现于mysql,mssql和oracle不会出现此问题。
mysql出现错误“ Every derived table must have its own alias”
Every derived table must have its own alias
这句话的意思是说每个派生出来的表都必须有一个自己的别名
一般在多表查询时,会出现此错误。
因为,进行嵌套查询的时候子查询出来的的结果是作为一个派生表来进行上一级的查询的,所以子查询的结果必须要有一个别名
把MySQL语句改成:select count(*) from (select * from ……) as total;
问题就解决了,虽然只加了一个没有任何作用的别名total,但这个别名是必须的
delete from tbl where id in
(
select max(id) from tbl a where EXISTS
(
select 1 from tbl b where a.tac=b.tac group by tac HAVING count(1)>1
)
group by tac
)
改写成下面就行了:
delete from tbl where id in
(
select a.id from
(
select max(id) id from tbl a where EXISTS
(
select 1 from tbl b where a.tac=b.tac group by tac HAVING count(1)>1
)
group by tac
) a
)
也就是说将select出的结果再通过中间表select一遍,这样就规避了错误。注意,这个问题只出现于mysql,mssql和oracle不会出现此问题。
mysql出现错误“ Every derived table must have its own alias”
Every derived table must have its own alias
这句话的意思是说每个派生出来的表都必须有一个自己的别名
一般在多表查询时,会出现此错误。
因为,进行嵌套查询的时候子查询出来的的结果是作为一个派生表来进行上一级的查询的,所以子查询的结果必须要有一个别名
把MySQL语句改成:select count(*) from (select * from ……) as total;
问题就解决了,虽然只加了一个没有任何作用的别名total,但这个别名是必须的
相关文章推荐
- 5.mysql学习笔记:复制的原理
- mysql提取身份证生日并查询指定月份的数据
- mysql性能对比
- GTID的常见错误和处理方法
- You can't specify target table 'marketing_setting' for update in FROM clause
- MySQL查询本周、上周、本月、上个月份数据的sql代码
- 4.mysql学习笔记:mysql的复制(一)
- mysql user表root 用户误删除解决方法
- 实例讲解Mysql中各种Join的作用
- MySQL命令行导出数据库
- 小白学习mysql之索引初步
- 自定义注解与MYSQL
- mysql主从同步详解和一些细节
- Node.js的mysql执行多表联合查询
- MySQL数据库表锁定的几种方法实现
- 安装mysqlsla性能分析工具
- mysql无法远程连接的解决方法
- Mysql5.7全新的root密码规则
- 21分钟 MySQL 入门教程
- MySQL中使用or、in与union all在查询命令下的效率对比