我正在尝试使用以下查询更新表
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服务器,并复制包含数据库的物理目录,这样就不会进一步覆盖任何内容:只需将数据文件夹简单地复