我所拥有的是一个包含大量产品的表(在本例中为书籍).我的销售点系统为我生成了一份包含ISBN(唯一产品编号)和永久销售额的报告.
我基本上需要做一个更新,将一个表中的ISBN与另一个表中的ISBN匹配,然后将销售额从一个表添加到另一个表.
这需要为大约30,000种产品完成.
这是我正在使用的SQL语句:
UPDATE `inventory`,`sales`
SET `inventory`.`numbersold` = `sales`.`numbersold`
WHERE `inventory`.`isbn` = `sales`.`isbn`;
Run Code Online (Sandbox Code Playgroud)
我收到MySQL错误:
#1317 SQLSTATE:70100(ER_QUERY_INTERRUPTED)查询执行被中断
我使用的是GoDaddy.com提供的phpMyAdmin
小智 7
我可能有点迟到了,但是......看起来查询被执行时间限制中断了.可能没有简单的方法,但这里有几个想法:
确保inventory.isbn并sales.isbn编入索引.如果不是,添加索引将大大缩短执行时间.
如果这不起作用,将查询分解为块并运行几次:
UPDATE `inventory`,`sales`
SET `inventory`.`numbersold` = `sales`.`numbersold`
WHERE `inventory`.`isbn` = `sales`.`isbn`
AND substring(`inventory`.sales`,1,1) = '1';
Run Code Online (Sandbox Code Playgroud)
该AND条款将搜索限制为以数字1开头的ISBN.对每个数字运行查询,从"0"到"9".对于ISBN,您可能会发现在最后一个字符上选择可以获得更好的结果.使用substring(库存.sales,-1)`
尝试在两个表中使用 INNER JOIN
UPDATE `inventory`
INNER JOIN `sales`
ON `inventory`.`isbn` = `sales`.`isbn`
SET `inventory`.`numbersold` = `sales`.`numbersold`
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
49881 次 |
| 最近记录: |