有一个表的数据比较大,然后需要进行关联删除,删除的时候发现如下SQL报错:
ELETE 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
开始以为是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;
将别名去掉就可以了,将上面两个报错的SQL更改成如下形式就可以了:
DELETE FROM test.test1 WHERE recordid IN (SELECT smsInfoID FROM test.test2 WHERE receiveTime <= "2011-10-09 00:00:00") LIMIT 1000;
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;

通过网友的指点,发现可以通过别名删除,只是语法有点奇怪,下面支持别名的语法:
DELETE test.a 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;

原文(http://blog.chinaunix.net/uid/122369.html)

最新文章

  1. Asp.Net 上传图片并生成高清晰缩略图
  2. 慕课网-Java入门第一季-6-9
  3. Magento订单打印(pdf格式)
  4. 3. 戏说VHDL之入门游戏一:流水灯
  5. SCP服务实现Linux交互
  6. Git GitHub的使用
  7. Spring Boot 整合 Redis 实现缓存操作
  8. .NET 随记
  9. 与二叉树有关的编程题的Java代码实现
  10. ORA-12541:TNS:无监听程序
  11. SpringMVC 复杂对象数据绑定
  12. nodejs前端开发环境安装
  13. 识别假tf卡工具
  14. SQL SERVER深入学习学习资料参考
  15. redis 处理命令的过程
  16. 26复杂类型比较,使用Compare .NET objects组件
  17. linux磁盘分区格式化-fdisk命令工具
  18. 一.jQuery源码解析之总体架构
  19. 微软构建高效DevOps团队培训总结
  20. Ajax的基础应用

热门文章

  1. -bash: /usr/librxec/grepconf.sh:Nosuch file or directory
  2. 张小龙用这8句话表达了NB产品的一切(转)
  3. JS 编程艺术
  4. WinPE基础知识之代码解析
  5. ORACLE和SQL查询库数据量
  6. jEasyUI 菜单与按钮
  7. eclipse创建Maven Web项目以及无法修改Project Facets
  8. django的几种缓存配置
  9. API开发之接口安全(四)----sign的唯一性
  10. PAT Advanced 1152 Google Recruitment (20 分)