有一个表的数据比较大,然后需要进行关联删除,删除的时候发现如下SQL报错:

点击(此处)折叠或打开

  1. 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;

报错如下:

点击(此处)折叠或打开

  1. Error Code: 1064
  2. 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再测试,也报同样错:

点击(此处)折叠或打开

  1. 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更改成如下形式就可以了:

点击(此处)折叠或打开

  1. DELETE FROM test.test1 WHERE recordid IN (SELECT smsInfoID FROM test.test2 WHERE receiveTime <= "2011-10-09 00:00:00") LIMIT 1000;
  2. 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;

通过win_study网友的指点,发现可以通过别名删除,只是语法有点奇怪,下面支持别名的语法:

点击(此处)折叠或打开

  1. 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;

感谢win_study网友!

转载于:https://www.cnblogs.com/feihongwuhen/archive/2012/04/09/7169864.html

MYSQL delete语句不支持别名?相关推荐

  1. mysql语句delete报错_「delete语句」MySQL——DELETE语句中的坑 - seo实验室

    delete语句 在网上搜索了一个mysql数据库删除重复数据的sql,原文是这样的: DELETE FROM people WHERE peopleName IN ( SELECT peopleNa ...

  2. MySQL delete 语句

    mysql 中delete语句主要分为三个层次,下面简单介绍下 1. 最基础的条件删除,如下所示 DELETE FROM table_name where table_name.name='dell' ...

  3. MySQL DELETE 语句的一个简单介绍

    MySQL DELETE 语句 你可以使用 SQL 的 DELETE FROM 命令来删除 MySQL 数据表中的记录. 你可以在 mysql> 命令提示符或 PHP 脚本中执行该命令. 语法 ...

  4. 零基础带你学习MySQL—Delete语句以及注意事项(九)

    零基础带你学习MySQL-Delete语句以及注意事项(九) 一.Delete语句的基本语法 二.Delete语句的注意事项

  5. mysql delete语句_MySQL ------ 触发器(TRIGGER)(二十七)

    MySQL 语句在需要时被执行,存储过程也是,但是你要是想要某条(或某些语句)在事件发生时自动执行,该怎么办触发器由此而来 触发器:某个表发生更改时自动处理.触发器是MySQL响应delete,ins ...

  6. 《零基础》MySQL DELETE 语句(十五)

    语法 以下是 SQL DELETE 语句从 MySQL 数据表中删除数据的通用语法: DELETE FROM table_name [WHERE Clause] 如果没有指定 WHERE 子句,MyS ...

  7. 雷林鹏分享:MySQL DELETE 语句

    你可以使用 SQL 的 DELETE FROM 命令来删除 MySQL 数据表中的记录. 你可以在 mysql> 命令提示符或 PHP 脚本中执行该命令. 语法 以下是 SQL DELETE 语 ...

  8. MySQL DELETE语句

    # DELETE语句 # DELETE语句用于删除记录 # DELETE [IGNORE] FROM 表名 [WHERE 条件1,条件2] [ORDER BY ...] [LIMIT ...];# 删 ...

  9. mysql delete语句非常耗时_解决项目中MySQL数据库执行删除语句时间太长的问题

    问题描述: 由于业务需求,需要删除一些重复数据.即删除openid对应的2条数据,最终只保留一行. MySQL数据库,sql语句比较简单:删除数据前,备份数据是必须的! 先来错误的演示: 1.先把错误 ...

最新文章

  1. linux read函数_Linux中shell输入ls命令后会系统会发生什么
  2. Mysql定期自动备份
  3. SAP UI5 应用开发教程之二十三 - 列表控件的排序 Sort 和分组 Group
  4. 【NOIp2002】矩形覆盖
  5. 教你一步搭建Flume分布式日志系统
  6. nodejs模块之event
  7. ajax 同步和异步的区别
  8. 17.UNIX 环境高级编程--高级进程间的通信
  9. php bin2hex park,PHP bin2hex()函数与示例
  10. 科技论文阅读-论文写作-citavi-Latex-word-Grammarly-1checker 小笔记
  11. python使用gdal读写BIP、BSQ数据格式tif及相互转换
  12. 老外的一份渗透测试报告
  13. 文本挖掘与matlab,文本挖掘与数据挖掘:发现差异
  14. 容器技术—docker stack
  15. 公司网站被跳转到其他网站被提示该站点可能受到黑客攻击,部分页面已被非法篡改
  16. python学习5(input函数)
  17. chain 的使用方法
  18. 无法解析大于号和小于号
  19. Potree使用指南
  20. linux7.5开放端口,Centos/linux开放端口

热门文章

  1. getpwnam学习
  2. JAVA实现链表面试题
  3. 西门子SIMENS学习网站
  4. spring boot 报错:Your ApplicationContext is unlikely to start due to a @ComponentScan of the default p
  5. arcgis api for javascript从地图如何读取要素
  6. 多样性算法在58部落的实践和思考
  7. 关于java的响应式编程框架----SpringReactor
  8. scala与java混合编译出现的问题
  9. 聊聊高并发(五)理解缓存一致性协议以及对并发编程的影响
  10. jQuery获取所有父级元素及同级元素及子元素的方法