转载自 http://home.blueidea.com/space.php?uid=164225&do=blog&id=6586
Mysql 1093 号错误 及解决
要做这样一个功能:
主表中有一ID对应副表中多个记录(一对多)。
现在给一组新值,如果在副表中存在,则保留,不存在,则插入(插入不在本话题讨论范围内)。如果旧记录的某个值不存在于这组新值中,则删除。比方:新值: a,b,f 以存在的旧值:a,b,c,e,现在要把c,e删除了,把 f 插进去。
开始我这样写:
DELETE FROM USNOWER_ART_KEYWORD WHERE ID IN (
SELECT
A.ID
FROM
USNOWER_ART_KEYWORD A LEFT JOIN
USNOWER_KEYWORD B ON A.KEYWORD = B.ID
WHERE
A.ART = 13 AND
B.KEYWORD NOT IN ('usnower','fashion')
);
mysql 报错:ERROR 1093 (HY000): You can't specify target table 'USNOWER_ART_KEYWORD' for update in FROM clause
以前做ORACLE的时候,碰到过变异表的问题:http://xling.blueidea.com/archives/2006/3012.shtml,我想这个也许和那个有点相似吧。
查了查百度,我做了一点修改:
DELETE FROM USNOWER_ART_KEYWORD WHERE ID IN (
SELECT C.ID FROM(
SELECT
A.ID
FROM
USNOWER_ART_KEYWORD A LEFT JOIN
USNOWER_KEYWORD B ON A.KEYWORD = B.ID
WHERE
A.ART = 13 AND
B.KEYWORD NOT IN ('usnower','fashion')
) C
);
即多出来一层SELECT。
问题解决。
分享到:
相关推荐
本文介绍了MySQL常见错误提示及解决方法。
MySQL常见错误及解决方案,适合新手
mysql的常见错误解决:一.在进入mysql数据库时出错;二、在创建数据库时报错。
MySQL常见错误及解决方案.pdf
启动mysql出现2003错误的解决方案
无论安装何版本的mysql,在管理工具的服务中启动mysql服务时都会在中途报错。内容为:在 本地计算机 无法启动mysql服务 错误1067:进程意外中止。
mysql数据库常见错误代码既解决方法的小结,常见几种错误,问题解决小技巧。仅供参考。 mysql数据库常见错误代码既解决方法的小结,常见几种错误,问题解决小技巧。仅供参考。
mysql常见错误提示及解决方法
Mysql常见错误提示及解决方法.pdfMysql常见错误提示及解决方法.pdf
mysql常见错误提示及解决方法.pdf
Mysql 安装错误的详细解决方法一览表
MySql写入中文错误解决办法,对于导入中文, 数据老是报错"Data too long for column XX at row n
因为一时手痒痒更新了一下驱动,结果导致无线网卡出了问题,本文给大家分享安装mysql时出现错误及解决办法,对安装mysql时出现错误相关知识感兴趣的朋友一起学习吧
看了一下错误提示: 一直以为是MySQL密码或者是访问权限的问题。 困扰n天。。。 某天,突然想到3306端口号占用,自己也很不解 但是查看了一下端口号,发现,3306端口号,竟然有两个端口号在使用。。。 ps:查看端口...
在虚拟机上安装mysql,显示发生系统错误1067,整了半天 错误显示: c:\mysql\bin>net start mysql MySQL正在启动 MySQL无法启动 系统出错 发生系统错误 1067 进程意外终止 卸载服务
mysql ERROR 1045 (28000) 错误及其解决办法
mysql服务1067错误多种解决方案.pdf
描述了“MySql 1067 错误”经常遇到的各种情况及其解决方法