MySQL |您无法在 FROM 子句中指定要更新的目标表“a”

2023-12-12

DELETE FROM table_a WHERE id IN(
    SELECT table_a.id AS id FROM table_a, table_b 
    WHERE table_a.object_id = 1 AND table_a.code = 'code' 
        AND table_a.code = table_b.code 
        AND table_b.id = table_a.b_id 
        AND table_b.table = 'testTable')

这是我希望 MySQL 执行的一个(稍微简化的)查询。我在 stackoverflow 的其他页面上读到,这不受支持,并且可以通过使用 JOINS 来解决。如何使用 JOINS 将其“转录”为查询?我发现很难做到这一点,因为我从未尝试过使用多个表创建 DELETE 查询。


您不能从表中删除并在子查询中引用同一个表——这只是 MySQL 的限制。像下面这样的东西应该有效:

DELETE FROM table_a 
USING table_a
INNER JOIN table_b
    ON table_a.code = table_b.code
    AND table_b.id = table_a.b_id
    AND table_b.table = 'testTable'
WHERE table_a.object_id = 1 
    AND table_a.code = 'code' 

重要的部分是USING。如果您只是连接两个表,则会从两个表中删除记录。USING告诉MySQL使用这些表进行处理,但只从表中删除FROM clause.

http://dev.mysql.com/doc/refman/5.0/en/delete.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MySQL |您无法在 FROM 子句中指定要更新的目标表“a” 的相关文章

随机推荐

  • 使用批处理运行带有参数的exe

    如何将参数传递到运行 exe 的批处理文件中 我有一个需要 2 个参数的程序 我想使用具有定义参数的 bat 文件运行它 5 五次 像这样的东西 FOR L G IN 1 1 5 DO start path program exe 20 1
  • 为什么 gcc 和 clang 为 std::find 生成这么多代码?

    我在 godbolt org 中输入以下代码 并使用 gcc 10 1 和 clang 10 编译它 include
  • 按键表达式存储静态过滤器

    我有一个函数 当传入一个时 它会生成一个表达式来通过主键过滤表Object 这非常类似于Find函数 只是它没有实现 所以你可以传递一个IQueryable之后周围 public static Expression
  • 使用标头过滤代理响应标头

    我有一个上游服务器 它经常通过返回 Set Cookie 响应标头来设置 Cookie 我想在上游服务器前面有一个 nginx 代理 Browser gt Nginx gt Upstream If the Browser gt Nginx请
  • 引用如何绑定到纯右值?

    cppreference 说 当引用绑定到纯右值时 会创建一个临时对象 它们是指 const 左值引用和右值引用吗 当纯右值具体化时 会创建临时对象 以便将其用作左值 这会在以下情况下发生 C 17 起 将引用绑定到纯右值 如果他们的意思是
  • 使部分(但不是全部)(CUDA) 内存访问不被缓存

    我只是注意到 CUDA 内核 内存访问完全有可能不被缓存 参见例如这个答案在这里 这可以吗 对于单个内核 在运行时而不是在编译时 仅用于写入而不是读取和写入 仅当您单独编译该内核时 因为这是通过代码生成启用的指令级功能 您还可以使用内联 P
  • Python3使用字典替换

    谁能解释一下这里出了什么问题 def get complementary sequence string dic A T C G T A G C for a b in dic items string string replace a b
  • 如何读取 log4j 输出到网页?

    我有一个网页 用于管理目的 它运行一个任务 从远程站点获取图像 为了能够仅使用浏览器而不是 ssh 等来调试任务 我希望能够读取执行线程的所有日志输出并将其吐出到网页 任务归结为 在调用开始时更改当前线程的日志级别 并在调用完成时恢复 读取
  • Hibernate 遇到 mysql := 运算符时出现异常

    当我执行以下代码时 出现异常 Exception org springframework orm hibernate3 HibernateQueryException Not all named parameters have been s
  • 如何在文本框中显示字符串数组

    您好 我是 C 新手 我的第一个 Windows 窗体应用程序遇到问题 我有来自串行端口的数据 并找到了一种处理数据并将其存储到 3 个不同字符串数组中的方法 我无法解决的是如何将数组中的数据显示到它们自己的单独文本框中 我只想显示当前索引
  • 使用实体框架(.edmx 模型)和 Razor 视图创建 MVC3 下拉列表&& 将数据库记录插入多个表

    在阅读了 100 篇有关如何使用 Razor 视图在 MVC 3 中创建下拉列表的文章后 我找不到适合我的情况的文章 情况 我最终试图创建一个视图来将员工添加到数据库中 这是我正在使用的 EDMX 模型的图像 create 将使用的表 目标
  • 如何在多行上打印数组列表?

    我正在学习 MOOC java 课程 并且我被困在练习 76 上 每当我提交答案时 它都会告诉我将每顿饭打印到单独的行 我该怎么做呢 主班 public class Main public static void main String a
  • 是否可以将请求标头添加到 iframe src 请求中?

    据我所知 在 JavaScript 中进行 AJAX 调用时 您可以非常轻松地设置 HTTP 请求标头 但是 通过脚本将 iframe 插入页面时是否也可以设置自定义 HTTP 请求标头 您可以在 JavaScript 中发出请求 设置您想
  • Java InetSocketAddress 类似于 .toString()?

    我正在 InetSocketAddress 上执行 toString 这是 Android websocket 客户端的一部分 迄今为止无法连接到主机 现在变量 address toString 的输出看起来像domain com 72 x
  • 在 POI 中添加带有 quotePrefix 的单元格

    我想在 xlsx 工作簿工作表中添加一个包含引号前缀的单元格 并且我正在尝试使用 POI 库创建该工作表 如何添加这种类型的单元格 我在 Maven Central 上找到了 CTXf setQuotePrefix boolean quot
  • php中匿名接口的实现

    在Java中我们可以这样做 interface Inter public void run class Test public Test Inter inter inter run new Test new Inter Override p
  • Clang 的 LTO 能否跨 C 和 C++ 方法进行优化 [重复]

    这个问题在这里已经有答案了 如果链接时优化 LTO 与clang 代码是否可以跨 C 和 C 语言边界进行优化 例如 C 函数可以内联到 C 调用程序中 反之亦然吗 AFAIK 是的 因为 Clang 生成 LLVM 中间表示 并且 LTO
  • Json.NET 根据属性类型设置属性为必填项

    我正在努力处理 Net core 中的自定义 json 序列化 我试图默认设置所需的所有属性 除非属性具有特定类型 这是我想要实现的目标的示例 假设我有以下类型 F type FooType id int name string optio
  • GAE 在 Java、Eclipse Indigo 中入门 - 无法编译为 1.6

    我觉得我一直在绕着这个转圈圈 我遵循了 Google App Engine 入门指南 https developers google com appengine docs java gettingstarted 在 Eclipse 中 一切
  • MySQL |您无法在 FROM 子句中指定要更新的目标表“a”

    DELETE FROM table a WHERE id IN SELECT table a id AS id FROM table a table b WHERE table a object id 1 AND table a code