当前位置: 首页 > 面试题库 >

更新查询失败,错误:1175

范甫
2023-03-14
问题内容

我正在尝试使用以下查询更新表

update at_product A join
(
SELECT atbillfields.billeditemguid,count(*) AS numberOfPeopleBought
    ,sum(atbillfields.billeditemqty) AS soldquantity
FROM jtbillingtest.at_salesbill atsalesbill 
JOIN jtbillingtest.at_billfields atbillfields
    ON atsalesbill.billbatchguid=atbillfields.billbatchguid
WHERE atsalesbill.billcreationdate BETWEEN '2013-09-09' AND date_add('2013-09-09', INTERVAL 1 DAY)
GROUP BY atbillfields.billeditemguid) B ON B.billeditemguid = A.productguid
SET A.productQuantity = A.productQuantity - B.soldquantity

但是,出现以下异常:

错误代码:1175。您正在使用安全更新模式,并且尝试在不使用使用KEY列的WHERE的情况下更新表。要禁用安全模式,请在“首选项”->“
SQL查询”中切换选项,然后重新连接。

当我给where子句提供类似的更新时A.productQuantity = 1,它更新了该特定内容。

有人可以指出为什么我无法执行查询以及如何解决该问题吗?


问题答案:

看一下:

http://justalittlebrain.wordpress.com/2010/09/15/you-are-using-safe-update-
mode-and-you-tried-to-update-a-table-without-a-where-that-
使用一个键列/

如果要更新而没有where键,则必须执行

SET SQL_SAFE_UPDATES=0;

在您查询之前。

另一个选择是重写查询或包含一个键。



 类似资料:
  • 我正在尝试使用以下查询更新表 但是,得到以下异常: 当我使用这样的更新给出子句时,它更新了该特定项。 有人能指出为什么我不能执行查询和如何解决这个问题吗?

  • 问题内容: 好的。我在这里建立了一个mysql查询浏览器,例如navicat。使用MySQLdb执行查询。 这是奇怪的部分。当我通过程序运行查询(使用MySQLdb)时,它给我成功,受影响的行= 1,但是当我在phpmyadmin中查看该查询时,该值没有改变。 因此,在执行查询之前,我先将其打印出来,然后将其复制并粘贴到phpmyadmin的查询窗口中,然后单击go即可运行。长话短说,更新查询不起

  • 以下代码在准备时失败: 我发现:警告:mysqli::prepare()[mysqli.prepare]:无法获取mysqli。。。我在上面的代码中做错了什么?我检查了语法文档,但是如果我尝试将查询作为sql进行pas,我会得到一个语法错误。对于mysqli语法错误是否有一个好的调试工具?

  • 我遇到了这个错误。 com.mysql.jdbc.exceptions.jdbc4。您有一个错误,在您的SQL语法;检查手册,对应于您的MySQL服务器版本的正确的语法使用附近'like='1',不喜欢='0',mealID='17'WHERE mealID='17"在第1行在sun.reflect.NativeConstructorAccessorImpl.newInstance0(本机方法)在

  • 问题内容: 我在表中输入了错误的更新查询。 我忘记在子句中创建一个id字段。 这样就更新了我所有的行。 如何恢复呢? 我没有备份…。 问题答案: 抱歉,恢复被覆盖的MySQL数据库的机会通常接近零。与删除文件不同,在大多数情况下,覆盖记录实际上会物理覆盖现有数据。 为了准备好发生任何事情,您应该停止MySQL服务器,并复制包含数据库的物理目录,这样就不会进一步覆盖任何内容:只需将数据文件夹简单地复