当前位置: 首页 > news >正文

mysql multi delete_mysql存储过程出现Unknown table 'a' in MULTI DELETE的解决办法

在存储过程中,调用:

复制代码 代码如下:

delete a from db1.tb1 a, db2.tb2 b where a.col1 = b.col1 and a.col2 = b.col2;

出现题目中的错误,原因如下:

在mysql中多表联合删除时,表别名只能在sql中表关联部分声明。我们应该避免不是表关联部分声明别名,因为这产生歧义的sql,从而产生不是期望的结果,例如在错误的表中删除行,举个例子来说:

复制代码 代码如下:

DELETE t1 AS a2 FROM t1 AS a1 INNER JOIN t2 AS a2;

对于多个表的删除,表的列表中提到的表别名的引用,使用默认数据库,除非已经明确地指定了一个数据库。例如,如果默认数据库是db1,下面的语句将不会工作,因为不确定的别名a2被认为已经有了db1:

复制代码 代码如下:

DELETE a1, a2 FROM db1.t1 AS a1 INNER JOIN db2.t2 AS a2

WHERE a1.id=a2.id;

除了默认数据库外,为了正确地匹配表的别名,我们必须明确地指定正确的数据库的名字,

复制代码 代码如下:

DELETE a1, db2.a2 FROM db1.t1 AS a1 INNER JOIN db2.t2 AS a2

WHERE a1.id=a2.id;

根据上述理论,sql应该这样写:

delete db1.a from db1.tb1 a, db2.tb2 b where a.col1 = b.col1 and a.col2 = b.col2;

注意的:

1.如果你为一个表声明了别名,当你指向这个表的时候,就必须使用这个别名,例如:

复制代码 代码如下:

-- 正确的写法:

DELETE t1 FROM test AS t1, test2 WHERE ...

-- 错误的写法:

DELETE test FROM test AS t1, test2 WHERE ...

2.在多个表联合删除时,不能使用order by 或limit,而单个表的删除时就没有这个限制。

3.当前,我们还不能在删除表的时候,在子查询中select from相同的表。

相关文章:

  • 活着的意义
  • python定义复数类complex使代码能够工作_定义一个复数类Complex,使得下面的代码能够工作...
  • java 生产者消费者问题_生产者消费者问题Java三种实现
  • Bézier Curve 简略论述(1)
  • 邮件标题乱码 java_Java mail 发送邮件 主题(标题)乱码
  • UltraEdit正则表达式搜索替换小技巧
  • java 动态调用可变参数传递_「params」Java基础------动态参数(可变参数,例如:Object... params) - seo实验室...
  • 清空列表,重新验证
  • java holdslock_Java Thread holdLock()方法
  • 启动websphere找不到java类_开发项目时,提示 找不到类的解决方法,以及如何设置编译源目录...
  • SharePoint 2007 部署篇
  • 关于书稿
  • java jpa 注解_Spring Data JPA 中常用注解
  • 奋斗在当下
  • java onmouseover_[Java教程]关于onmouseover和onmouseout的bug
  • hexo+github搭建个人博客
  • 【跃迁之路】【641天】程序员高效学习方法论探索系列(实验阶段398-2018.11.14)...
  • Android 架构优化~MVP 架构改造
  • JSDuck 与 AngularJS 融合技巧
  • 后端_MYSQL
  • 基于HAProxy的高性能缓存服务器nuster
  • 如何抓住下一波零售风口?看RPA玩转零售自动化
  • 深入浅出Node.js
  • 吴恩达Deep Learning课程练习题参考答案——R语言版
  • 一个6年java程序员的工作感悟,写给还在迷茫的你
  • 一个SAP顾问在美国的这些年
  • puppet连载22:define用法
  • 哈罗单车融资几十亿元,蚂蚁金服与春华资本加持 ...
  • #NOIP 2014#day.2 T1 无限网络发射器选址
  • ( )的作用是将计算机中的信息传送给用户,计算机应用基础 吉大15春学期《计算机应用基础》在线作业二及答案...
  • (C语言)逆序输出字符串
  • (M)unity2D敌人的创建、人物属性设置,遇敌掉血
  • (ZT)一个美国文科博士的YardLife
  • (转)C#开发微信门户及应用(1)--开始使用微信接口
  • (转)清华学霸演讲稿:永远不要说你已经尽力了
  • (转)重识new
  • .NET CORE 3.1 集成JWT鉴权和授权2
  • .net core 客户端缓存、服务器端响应缓存、服务器内存缓存
  • .NET Core 网络数据采集 -- 使用AngleSharp做html解析
  • .NET Core跨平台微服务学习资源
  • .net 验证控件和javaScript的冲突问题
  • .NET程序员迈向卓越的必由之路
  • .NET分布式缓存Memcached从入门到实战
  • .NET项目中存在多个web.config文件时的加载顺序
  • .Net转Java自学之路—基础巩固篇十三(集合)
  • :“Failed to access IIS metabase”解决方法
  • [APUE]进程关系(下)
  • [BeginCTF]真龙之力
  • [CSS]文字旁边的竖线以及布局知识
  • [c语言]小课堂 day2
  • [ERROR] ocp-server-ce-py_script_start_check-4.2.1 RuntimeError: ‘tenant_name‘
  • [Hibernate] - Fetching strategies
  • [HTML]Web前端开发技术30(HTML5、CSS3、JavaScript )JavaScript基础——喵喵画网页
  • [Java] IDEA Scala环境搭建
  • [nlp] grad norm先降后升再降