如何重写此 MySQL 查询,使其不会引发此错误:您无法在 FROM 子句中指定目标表“crawlLog”进行更新?

2024-01-06

我正在尝试从公司表中获取 id,但该 id 尚未出现在crawlLog 表中。然后我需要将该companyId 插入crawlLog 表中。

我需要在一次调用中执行此操作,以便并行爬网程序在其他爬网程序选择了某个 url 但尚未将其插入爬网日志后不会提取相同的 url。我不想因为产生其他问题而锁定表。

我从下面的两个查询中收到此错误:

You can't specify target table 'crawlLog' for update in FROM clause

这是我尝试做同样事情的两个查询。

INSERT INTO crawlLog (companyId, timeStartCrawling)
VALUES
(
    (
        SELECT companies.id FROM companies
        LEFT OUTER JOIN crawlLog
        ON companies.id = crawlLog.companyId
        WHERE crawlLog.companyId IS NULL
        LIMIT 1
    ),
    now()
)

我也尝试过这个,但得到同样的错误:

INSERT INTO crawlLog (companyId, timeStartCrawling)
VALUES
(
    (
        SELECT id
        FROM companies
        WHERE id NOT IN
        (
            SELECT companyId
            FROM crawlLog
        )
        LIMIT 1
    ),
    now()
)

为什么要使用子选择? INSERT INTO ... SELECT 存在:

INSERT INTO crawlLog (companyId, timeStartCrawling)
SELECT companies.id, NOW()
FROM companies
LEFT OUTER JOIN crawlLog
ON companies.id = crawlLog.companyId
WHERE crawlLog.companyId IS NULL
LIMIT 1

这样它就不会抱怨在 INSERT 和 SELECT 部分中同时使用表

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

如何重写此 MySQL 查询,使其不会引发此错误:您无法在 FROM 子句中指定目标表“crawlLog”进行更新? 的相关文章

  • mySQL MATCH 跨多个表

    我有一组 4 个表 我想对其进行搜索 每个都有全文索引 查询可以使用每个索引吗 CREATE TABLE categories id int 5 unsigned NOT NULL auto increment display order
  • 使用按位函数查询 BIT 字段时,MySQL 不使用索引

    我的 MySQL 表中有一个 BIT 类型的字段 我想使用位值存储记录的状态 例如 1 status1 2 status2 4 status3 8 status4 每条记录可以同时具有多种状态 对于 status1 和 status3 该值
  • 使用 Java 登录

    我通过执行以下代码在 java 中创建一个记录器 private static final String logFile File separator Log Files File separator Log Long toString S
  • 如何将 MySQL 数据库更改为 UTC?

    我使用的是 Windows 7 对数据库方面的东西有点陌生 我尝试在 Google 上搜索如何将系统时区更改为 UTC 但文档有些高级 我不太确定如何更改此字段 在 my ini 文件的 mysqld 部分下 添加以下行 default t
  • 如何使用 ILoggerFactory 记录 Polly 的重试

    或者 如何从静态方法记录 From https github com App vNext Polly https github com App vNext Polly你有这样的例子 其中记录器神奇地可用 Policy Timeout 30
  • 如何在 phpmyadmin 中创建 MySQL 触发器

    我想在 MySQL 中创建一个触发器 我运行以下命令 mysql gt delimiter mysql gt CREATE TRIGGER before insert money BEFORE INSERT ON money gt FOR
  • Mysql innoDB 不断崩溃[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我的数据库 mysql 服务器不断崩溃 重新启动 我不知道该怎么办 我不断在 dbname org err 文件中收到以下内容 13120
  • PDO SQLSRV 和 PDO MySQL 在获取 int 或 float 时返回字符串

    当您获取时 PDO MS SQL Server 和 PDO MySQL 都会返回一个字符串数组 即使列的 SQL 类型本应是数字类型 例如 int 或 float 我设法解决了这个问题 但我想了解为什么它们一开始就这样设计 是不是因为PDO
  • PHP 绑定“bigint”数据类型(MySQLi 准备好的语句)

    studentId 57004542323382 companyOfferId 7 sql INSERT INTO studentPlacement companyOfferId studentId VALUES if stmt db gt
  • 当sql连接中存在两个同名列时,如何从一个表列中获取值

    当我连接两个具有相同名称列的表时 我目前面临着尝试获取值的问题 例如 table1 date和table2 date 每个表中的日期不同 我将如何获取 日期 本例中的表1 我目前正在跑步 while row mysqliquery gt f
  • Mysql 检索所有有限制的行

    我想检索特定用户的所有行 限制为 0 x 所以我只是想问是否有任何方法可以检索 mysql 中的所有行 而不调用返回 x 的 count id 的方法 而不重载现有函数 该函数在查询中根本没有限制 与我们的 string Relace 功能
  • MYSQL 区分大小写的 utf8 搜索(使用 hibernate)

    我的登录表具有 utf8 字符集和 utf8 排序规则 当我想要检查用户名并检索该特定用户名的其他信息时 hql 查询会为我提供小写和大写相同的结果 我应该如何处理适用于案例的 HQL 查询 我使用 Mysql 5 和 java hiber
  • 如何正确转义mysql?

    我刚刚发现如果我写 select from tbl where name like foo 然后添加 foo 作为参数及其值 a 用户数据 它不会正确转义 我勒个去 它想要 a 即使我使用参数 我还是忍不住觉得我对 sql 注入持开放态度
  • 忽略重复条目并在 EF Core 中的 DbContext.SaveChanges() 上提交成功条目

    我有一个 ASP Net Core 2 2 Web API 在我的一个控制器操作中 我向 MySQL 数据库表添加了一堆行 我使用的是 Pomelo 例如 dbContext AddRange entities dbContext Save
  • MySQL 查询计算上个月

    我想计算上个月的订单总额 我收到了从当前日期获取当月数据的查询 SELECT SUM goods total AS Total Amount FROM orders WHERE order placed date gt date sub c
  • 即使使用“autoReconnect=true”,MySql JDBC 也会超时[重复]

    这个问题在这里已经有答案了 有时 我的 Java Tomcat6 Debian Squeeze 应用程序无法与 MySql 服务器通信 Tomcat 应用程序位于前端服务器上 而 MySql 位于单独的 仅限 MySql 的机器上 一个典型
  • MySQL 查询到 CSV [重复]

    这个问题在这里已经有答案了 有没有一种简单的方法来运行MySQL查询来自linux命令行并以csv格式输出结果 这就是我现在正在做的事情 mysql u uid ppwd D dbname lt lt EOQ sed e s g tee l
  • PDO PHP 连接,致命错误

    我的连接类 firstcode php class DB functions public db function construct try db new PDO mysql localhost dbname xxx charset ut
  • INSERT..RETURNING 在 JOOQ 中不起作用

    我有一个 MariaDB 数据库 我正在尝试在表中插入一行users 它有一个生成的id我想在插入后得到它 我见过this http www jooq org doc 3 8 manual sql building sql statemen
  • SQL不允许表中有重复记录

    如何使其不添加重复项 我想让它通过 ID 之外的所有其他列进行检查 我希望这个无效 ID col1 col2 col3 1 first middle last ID col1 col2 col3 2 first middle last 我希

随机推荐

  • Android WebView 在用户交互之前无法完全渲染内容

    我有一个扩展 WebView 的自定义类 用于显示 HTML 内容 当用户单击 HTML 文档中的链接时 我计算要滚动到的 X 值 然后使用scrollTo x y 通过可运行对象显示该位置 见下文 post new Runnable Ov
  • 一个关于比较List的问题

    我有两个清单 List
  • RabbitMQ - 通道关闭:连接错误(SpringXD 重复关闭rabbitmq 连接。)

    我度过了一个糟糕的夜晚 试图弄清楚 RabbitMQ 和 SpringXD 到底发生了什么 不幸的是没有成功 问题 SpringXD反复关闭RabbitMQ连接 或报告与通道缓存大小相关的警告 SpringXD 日志的片段 在流初始化 自动
  • 猫鼬自定义模式类型

    我从 mongoose 文档中了解到 可以创建自定义模式类型并将其添加到已有的模式类型中 正如所建议的 我尝试研究猫鼬长的例子 https github com aeckmann mongoose long https github com
  • 退格键在 Eclipse Mars 中恢复

    我在 Eclipse Mars 4 5 0 中的退格键的作用类似于删除键 它删除右侧字符而不是左侧字符 这真的很令人困惑 也许我不小心使用了快捷键 我尝试重新启动 Eclipse 但没有成功 我还尝试将键绑定首选项切换为 Emacs 方案
  • 检查页面是父页面还是子页面?

    是否可以检查页面是父页面还是子页面 我的页面设置如下 家长 子页1 子页2 etc 如果它是父页面 我想显示某个菜单 如果它在子页面上 我想显示不同的菜单 我知道我可以做类似下面的事情 但我想让它更加动态 而不包含特定的页面 ID 您可以测
  • “kotlin-noarg”插件在 Realm 中不起作用

    kotlin allopen 插件可以工作 但 kotlin noarg 插件不起作用 我能怎么做 下面是代码 构建 gradle buildscript ext kotlin version 1 1 3 2 repositories go
  • cin 首次使用函数后不允许输入

    对于 C 或任何类型的编程来说都是全新的 我正在尝试进行简单的输入 输出 但是在回答第一个问题后 我没有机会输入第二个输入 我尝试过在网上查找内容 但考虑到这是一个非常简单的代码 据说哈哈 没有人遇到过同样的问题 这让我来到这里 inclu
  • 生产中的高超音速休眠?

    开发商高超音速 http hsqldb org 承诺提高绩效 但我担心使用 hsqlDB 的管理和其他方面会出现问题 有人在生产中使用这个吗 这是个好主意吗 许多公司 http hsqldb org web hsqlUsing html在生
  • 如何评估 WHERE 子句中的输入

    我正在我的一个变量中输入一个输入 基本上我想做一些类似的事情 SELECT FROM PEOPLE WHERE IF INPUT 1 ITEMID 16 OR ITEMID 13 ELSE IF INPUT 2 ITEMID 11 OR I
  • Java SFTP (apache vfs2) - 密码带有@

    我正在尝试使用 org apache commons vfs2 通过 SFTP 下载文件 问题是 密码包含 字符 因此这会导致 URI 被错误解析 org apache commons vfs2 FileSystemException Ex
  • 有没有办法只限制mysql中的较低范围?

    我想获取查询中除第一行之外的所有行 我怎样才能做到这一点 您可以使用大量行 偏移量为1 LIMIT 1 18446744073709551615
  • 为什么 JSON 列不能是唯一键?

    我有一个表 里面有一个名为ColumnName该列的数据类型是JSON 我正在努力让它成为unique key 但这是不可能的 我收到了这条消息 3152 JSON 列 columnName 不能在键规范中使用 我想了解为什么我不能将该列设
  • 在 SQL Server 中从 base64 字符串转换为 varbinary(max)

    我的表中以二进制形式存储了 PDF 文档 存储 PDF 字节的列是 typevarbinary max 我想要updateSQL Studio 中包含更新文档的一条记录 我尝试完成此操作的方式如下所示 UPDATE table SET fi
  • Azure 搜索是否支持拼写错误和同义词?

    我见过讨论这两个主题的线程 Azure 搜索是否处理同义词 https stackoverflow com questions 31180405 does azure search handle synonyms 搜索 API 中的模糊搜索
  • 没有简单组件的提供者

    直到 5 分钟前它才工作 这毫无意义 这是组件 import Component OnInit from angular core import Osobaa from osobaa import Osoba from osoba impo
  • RUBYLIB 环境路径

    所以目前我已将以下内容包含在我的 bashrc 文件中 export RUBYLIB home git project app helpers 我正在尝试使用具有以下规范的规范来运行 rspec require output helper
  • 在Python中读取csv文件时列出索引超出范围错误

    我有这段代码 我正在读取 csv 文件 使用NamedTemporaryFile更改 csv 文件的内容 def update localcsv ping Yes No filename file1 csv tempfile NamedTe
  • 发布 TypeScript 包时如何处理可选的对等依赖项?

    将 TypeScript 包发布到 npm 并提供接受来自一个对等依赖项或另一个对等依赖项的输入的函数时 如何定义可选的对等依赖项 import ExternalFoo from foo import ExternalBar from ba
  • 如何重写此 MySQL 查询,使其不会引发此错误:您无法在 FROM 子句中指定目标表“crawlLog”进行更新?

    我正在尝试从公司表中获取 id 但该 id 尚未出现在crawlLog 表中 然后我需要将该companyId 插入crawlLog 表中 我需要在一次调用中执行此操作 以便并行爬网程序在其他爬网程序选择了某个 url 但尚未将其插入爬网日