当前位置: 首页 > 知识库问答 >
问题:

使用键列的Where子句仍然给出错误

吕宣
2023-03-14
DELETE 
FROM `ate`.`test_configuration`
WHERE `ate`.`test_configuration`.`ID` NOT IN (SELECT DISTINCT `ate`.`index`.`TestID` from `ate`.`index`);

这很混乱,因为我的where子句确实使用了主键列。我知道我可以禁用安全模式作为我的脚本的一部分作为一个变通办法,但仍然想要理解为什么我会得到这个错误。如果可能的话,我希望避免不安全的更新。

共有1个答案

景品
2023-03-14

我相信Optimizer只是无法有效地使用索引来进行这样的查询--所以它做了全表扫描。

test_configuration中有多少行,其中有多少行将被删除?

(您可能会尝试使用索引提示来强制优化器对查询使用索引,只是不确定您的mysql版本是否支持它们)。

 类似资料:
  • 问题内容: 我正在尝试从SQL导出到.csv,如果我对其进行硬编码以接受一定数量的参数,则它可以正常工作。问题是,我想允许用户请求任意数量的参数,并将它们传递给where子句。该代码应该使这一点更加清楚。 所以我想我要做的是将列表传递给where子句,而不是显式的:dates#变量。例如,一个人可以使用参数“ 2012-01-0412:00、2012-02-04 12:00、2012-03-04

  • 我搜索了互联网、文档和stackoverflow上的大量内容,但都没有结果。我使用MySQL Workbench尝试在特定列的末尾连接一些附加值 我的原始代码是: 但是,这引发了一个错误“错误代码:1093。您不能在From子句中指定目标表“翻译”以进行更新”。我在stackoverflow上搜索并将我的代码更改为: 现在会抛出“错误代码:1175。您正在使用安全更新模式,并且您尝试更新一个没有使

  • 我是mySQL的新手,在学习连接的同时,我尝试使用左连接、右连接和完全外部连接来创建一个完全连接。然后我意识到我的一个原始表(表t2)有一个空行。 当尝试删除它时,我得到错误:错误代码:1175。您正在使用安全更新模式,并且试图更新一个没有使用键列禁用安全模式的WHERE的表,请在Preferences->SQL Editor中切换该选项并重新连接。 更新:当我使用MySQL命令行时,我没有看到空

  • 问题内容: 我有一个名为表有三列:,,。 我正在尝试创建一个查询,该查询将根据昵称返回余额,并且在使用此查询时遇到错误: 有人可以在这里看到我做错了吗? 问题答案: 反引号(`)用于标识符,例如表名,列名等。单引号(’)用于字符串文字。 您想做: 或者,更明确地说: 如果没有歧义的可能性,并且表/列名称没有特殊字符或空格,则可以将`设置为off。 这是一些干燥且难以阅读的文档:http : //d

  • 我有一个angular 2应用程序,它使用firebase进行身份验证。我想使用谷歌作为我的身份验证提供者,并有一切设置,以便它应该工作。 如果我尝试用signinWithPopup进行身份验证(如文档中提到的),它可以工作: 但是,如果使用重定向尝试相同的代码,则会出现错误: 有人知道为什么弹出式方法有效而重定向方法无效吗?

  • 问题内容: 我有这样的查询: 出现以下错误: 在MySql中,这是有效的,但显然在Postgresql中是无效的。据我所知,原因是查询部分的评估晚于该部分。是否有解决此问题的常用解决方法? 问题答案: 正如您所经历的那样,MySQL的支持是非标准的。正确的方法是重新打印SELECT子句中使用的相同表达式: