学习MYSQL过程中,拿mysql 中的user
表来折腾一下,发现mysql中的子查询有些问题,比方说,现在user表的内容如下图:
金沙城中心赌场 1
 

今天在写 mysql 遇到一个比较特殊的问题。
mysql 语句如下:

想把它变成如下图所示:
金沙城中心赌场 2
 

update wms_cabinet_form set cabf_enabled=0
where cabf_id in (
SELECT wms_cabinet_form.cabf_id FROM wms_cabinet_form
金沙城中心赌场 ,Inner Join wms_cabinet ON wms_cabinet_form.cabf_cab_id =
wms_cabinet.cab_id
Inner Join wms_cabinet_row ON wms_cabinet.cab_row_id
=wms_cabinet_row.row_id
where wms_cabinet_row.row_site_id=27 and
wms_cabinet_form.cabf_enabled=1)

按说应该很简单的嘛,用个子查询就应该OK了啊,结果却报错:You can’t
specify target table ‘user’ for update in FROM clause。
金沙城中心赌场 3
 

运行时提出如下提示: You can’t specify target table ‘wms_cabinet_form’
for update in FROM clause

怎么这么简单的东西,还通不过,奇怪,赶紧百度一下,竟然在mysql不能这样用法,faint,修改一下语句,如下,就OK了,就是需要多倒腾一下子才行,相当于弄个临时表,再弄个别名,真的很麻烦啊,希望mysql尽快解决这个无聊的事情吧。

运行 in 里面的 select 字句:

金沙城中心赌场 4

SELECT wms_cabinet_form.cabf_id FROM wms_cabinet_form
Inner Join wms_cabinet ON wms_cabinet_form.cabf_cab_id =
wms_cabinet.cab_id
Inner Join wms_cabinet_row ON wms_cabinet.cab_row_id
=wms_cabinet_row.row_id
where wms_cabinet_row.row_site_id=27 and
wms_cabinet_form.cabf_enabled=1

相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图