首页 电脑 电脑学堂 查看内容

MYSQL delete语句不支持别名的问题

2012-4-13 15:15 735 0

摘要: 有一个表的数据比较大,然后需要进行关联删除,删除的时候发现如下SQL报错:   DELETE FROM test.test1 a WHERE EXISTS (SELECT 1 FROM ...
关键词: test nbsp WHERE recordID receiveTime DELETE SELECT smsInfoID 00 EXISTS

有一个表的数据比较大,然后需要进行关联删除,删除的时候发现如下SQL报错:   DELETE FROM test.test1 a WHERE EXISTS (SELECT 1 FROM test.test2 b WHERE a.recordID=b.smsInfoID AND b.receiveTime <="2011-10-09 00:00:00" ) limit 1000;  报错如下:   Error Code: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'a WHERE EXISTS (SELECT 1 FROM test.test2 b WHERE a.recordID=b.smsInf' at line 1  www.2cto.com   开始以为是exists的问题,于是更改成in再测试,也报同样错:   DELETE FROM test.test1 a WHERE a.recordid IN (SELECT b.smsInfoID FROM test.test2 b WHERE b.receiveTime <= "2011-10-09 00:00:00") LIMIT 1000;   原来是MYSQL的delete语句不支持别名!   将别名去掉就可以了,将上面两个报错的SQL更改成如下形式就可以了:   DELETE FROM test.test1 WHERE recordid IN (SELECT smsInfoID FROM test.test2 WHERE receiveTime <= "2011-10-09 00:00:00") LIMIT 1000;  www.2cto.com   DELETE FROM test.test1 WHERE EXISTS (SELECT 1 FROM test.test2 WHERE test1.recordID=test2.smsInfoID AND test2.receiveTime <= "2011-10-09 00:00:00") LIMIT 1000;       作者 飞鸿无痕
声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系 [邮箱地址] 删除

路过

雷人

握手

鲜花

鸡蛋

最新评论

返回顶部