mysql中You can’t specify target table for update in FROM clau_MySQL教程
推荐:MySQL查询和修改auto_increment的方法本文实例讲述了MySQL查询和修改auto_increment的方法。分享给大家供大家参考。具体如下: 查询表名为tableName的auto_increment值: 代码如下:SELECT AUTO_INCREMENT FROM information_schema.tables WHERE table_name=tableName; 修改表名为tableName的auto_increment
mysql中You can't specify target table 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中的if和case语句使用总结Mysql的if既可以作为表达式用,也可在存储过程中作为流程控制语句使用,如下是做为表达式使用: IF表达式 代码如下: IF(expr1,expr2,expr3) 如果 expr1 是TRUE (expr1 0 and expr1 NULL),则 IF()的返回值为expr2; 否则返回值则为 expr3。IF() 的返回值为数字值或字符
- MySQL查询和修改auto_increment的方法
- MySQL中的if和case语句使用总结
- Centos5.5中安装Mysql5.5过程分享
- /var/log/pacct文件导致MySQL启动失败的案例分享
- MySQL中在查询结果集中得到记录行号的方法
- CentOS下php使用127.0.0.1不能连接mysql的解决方法
- 如何配置MySQL主从复制
- MySQL 备份和恢复策略详细教程
- Apache服务器下使用 ab 命令进行压力测试
- MySQL下的NoSQL解决方案HandlerSocket
- MySQL引擎 学习笔记
- navicat如何连接mysql?navicat连接mysql详细图文教程
- 相关链接:
复制本页链接| 搜索mysql中You can’t specify target table for update in FROM clau
- 教程说明:
MySQL教程-mysql中You can’t specify target table for update in FROM clau。