我有一个名为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在两个表中都设置为主键,那么来自哪里?
答案 0 :(得分:1)
UPDATE myData
INNER JOIN temp on myData.id = temp.id
SET myData.name = temp.name;