每次尝试从临时表更新myData时都会出现SQL语法错误

时间:2016-01-29 14:29:51

标签: mysql

我有一个名为myData的简单表,如下所示:

ID     NAME
1      Bob
2      Sue
3      Doug

然后我有一个临时表,其中包含用户所做的更改。 TEMP表如下所示:

ID     NAME
1      Bobby
2      Sue
3      Douglas

我想要做的就是使用对TEMP的更改来更新myData。我试过这段代码:

UPDATE myData
SET myData.name = temp.name
FROM temp
WHERE myData.id = temp.id;

此代码:

UPDATE myData
SET myData.name = temp.name
FROM myData 
INNER JOIN temp
ON myData.id = temp.id;

和此代码:

MERGE INTO myData
USING temp
ON myData.id = temp.id
WHEN MATCHED THEN
UPDATE
SET myData.name = temp.name;

所有这些示例都给我一个SQL语法错误。在前两个,FROM似乎是问题所在。在最后一个例子中,MERGE似乎是个问题。

我必须遗漏一些明显的东西。有任何想法吗? 如果重要的话,我在mySQLWorkbench上使用mySQL。

UPDATE **********************************

通过这样做我已经摆脱了语法错误:

UPDATE myData, temp
SET myData.name = temp.name
WHERE myData.id = temp.id;

但是现在我被告知“你正在尝试更新没有使用KEY列的WHERE的表”。 ID在两个表中都设置为主键,那么来自哪里?

1 个答案:

答案 0 :(得分:1)

UPDATE myData
INNER JOIN temp on myData.id = temp.id
SET myData.name = temp.name;