博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
mysql
阅读量:6095 次
发布时间:2019-06-20

本文共 824 字,大约阅读时间需要 2 分钟。

hot3.png

有时候我们在编辑update时需要select作为条件,在mysql中有时会出现这样的错误:You can't specify target table for update in FROM clause错误的意思是说,不能先select出同一表中的某些值,再update这个表(在同一语句中)。

例如下面这个sql:

UPDATE ship_product_cat SET is_parent = 0  WHERE id in(SELECT id FROM ship_product_cat WHERE name in('Control','Propeller/Shaft'));

错误信息:

[SQL]UPDATE ship_product_cat SET is_parent = 0 WHERE id in(
SELECT id FROM ship_product_cat WHERE name in('Control','Propeller/Shaft'));
[Err] 1093 - You can't specify target table 'ship_product_cat' for update in FROM clause

 解决方法——换成下面的SQL就可以了 

UPDATE ship_product_cat SET is_parent = 0  WHERE id in(SELECT a.id FROM(SELECT id FROM ship_product_cat WHERE name in('Control','Propeller/Shaft'))a);

 

也就是说将select出的结果再通过中间表select一遍,这样就规避了错误。

 这个错误会出现在mysql中,但不会出现在oracle中。

转载于:https://my.oschina.net/architectliuyuanyuan/blog/1619262

你可能感兴趣的文章
Python基础班---第一部分(基础)---Python基础知识---计算机组成原理
查看>>
虚拟机VMware 9安装苹果MAC OSX 10.8图文教程
查看>>
POJ3694 Network
查看>>
微信小程序开发-框架
查看>>
redo、undo、binlog的区别
查看>>
DropDownList 控制日期控件显示格式
查看>>
RecycleView设置顶部分割线(记录一个坑)
查看>>
【设计模式系列】单例模式的7种写法
查看>>
汉字转拼音 (转)
查看>>
Machine Learning Techniques -6-Support Vector Regression
查看>>
会计基础_001
查看>>
Cordova 开发环境搭建及创建第一个app
查看>>
ajax请求拿到多条数据拼接显示在页面中
查看>>
小程序: 查看正在写的页面
查看>>
dedecms生成文档数据库崩溃 mysql daemon failed to start
查看>>
Linux的50个基本命令
查看>>
Objective-C中创建单例方法的步骤
查看>>
[转]无法安装MVC3,一直卡在vs10-kb2483190
查看>>
Codeforces 520B:Two Buttons(思维,好题)
查看>>
web框架-(二)Django基础
查看>>