更新查询失败,错误:1175

Fir*_*iru 5 mysql sql

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

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
Run Code Online (Sandbox Code Playgroud)

但是,获得以下异常:

错误代码:1175.您正在使用安全更新模式,并且您尝试更新没有使用KEY列的WHERE的表要禁用安全模式,请在Preferences - > SQL Queries中切换选项并重新连接.

当我给出一个where更新的子句时A.productQuantity = 1,它更新了那个特定的.

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

Men*_*los 23

看一下:

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

如果要在没有where键的情况下进行更新,则必须执行

SET SQL_SAFE_UPDATES=0;
Run Code Online (Sandbox Code Playgroud)

就在你的查询之前.

另一个选择是重写您的查询o包括一个键.


Joe*_*ino 6

此错误意味着您正在安全更新模式下运行,因此您有两个选择:

  • 您需要提供一个 where 子句,其中包含更新成功的索引或
  • 您可以通过执行禁用此功能 SET SQL_SAFE_UPDATES = 0;