我有以下查询,但恐怕INTO
它不会在MySQL中创建临时表,而在SQL Server 2008 R2中它没有问题。我需要从从中获得的数据中更新一个表,sr_itemRock
以便在sr_productos
. 没有出来的细节是临时表的创建。
询问:
SELECT a.ItemID, a.ItemDesc
INTO #Temp
from sr_itemrock a
INNER JOIN sr_productos b
on a.ItemID = b.codigo
WHERE id > 600
UPDATE sr_productos
SET
descripcion_bra IN (SELECT ItemDesc FROM #Temp)
,descripcion_eng IN (SELECT ItemDesc FROM #Temp)
,descripcion_esp IN (SELECT ItemDesc FROM #Temp)
WHERE
ItemID IN (SELECT ItemID FROM #Temp)
DROP Table #Temp
此查询在SQL Server中通常没有错误,但在MySQL中却有。详细信息在临时表中。谁能告诉我如何使用临时表将数据从一个表更新到另一个表?
错误:
[Err] 1064 - 您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 3 行的“from sr_itemrock a INNER JOIN sr_productos b on a.ItemID = b.codigo WHERE id”附近使用正确的语法
由于您的问题似乎集中在第一个查询上,因此我的回答将集中于此。但我顺便提一下,
UPDATE
他似乎也没有正确的 MySQL 或 SQL Server 语法。实际上,该语法
SELECT ... INTO ...
在 MySQL 中不起作用。其实创建临时表的方式也不同。相当于您的 SQL Server 查询:
...在 MySQL 中将是以下内容:
请注意,语法是
CREATE TEMPORARY TABLE nombre AS SELECT ...
,并且您分配给表的名称不能#
像在 SQL Server 中那样以 a 开头。对于 del
UPDATE
,子句中的语法在SET
任何数据库引擎上似乎都无效。我怀疑这是您正在寻找的声明: