我有一个名为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 似乎是问题所在。 在最后一个示例中,合并似乎是问题所在。
我一定错过了一些明显的东西。 有什么想法吗?如果这很重要,我在mySQLWorkbench上使用mySQL。
更新**********************************
我通过这样做摆脱了语法错误:
UPDATE myData, temp
SET myData.name = temp.name
WHERE myData.id = temp.id;
但是现在我被告知"您正在尝试更新一个没有使用 KEY 列的 WHERE 的表"。 ID 在两个表中都设置为主键,那么它从何而来?
UPDATE myData
INNER JOIN temp on myData.id = temp.id
SET myData.name = temp.name;