临时表的列在字段列表中未知

3

我创建了一个临时表,这个表与已有的表完全匹配。

create temporary table all_plants_temp SELECT * from all_plants;

我的目标是在需要时将对临时表 all_plants_temp 的任何更改转移到原始表中。为了实现这一点,我一直在尝试更新原始表并将其列设置为临时表的列。

update all_plants set all_plants.symbol = all_plants_temp.symbol...(followed by the other columns)...;

我这样做会出现以下错误:

Error Code: 1054. Unknown column 'all_plants_temp.symbol' in 'field list'

我已经尝试了很多次这段代码,但都没有成功。由于我还是个新手,所以我认为可能存在概念上的误解,但无论我到哪里搜索,似乎都找不到我的错误。希望能得到帮助。

编辑:我忘记提到以下查询是有效的。

select symbol from all_plants_temp;

看起来你没有正确创建临时表。你应该使用 CREATE TABLE all_plants_temp LIKE all_plants 然后再执行 INSERT all_plants_temp SELECT * FROM all_plants - WillardSolutions
你在“where”子句中设置了适当的条件吗?也许有多个匹配记录。 - Mahmoud
1个回答

2
您可以通过以下方式之一再次DROP和CREATE表来实现此操作:
drop table all_plants;

create table all_plants SELECT * from all_plants_temp;

当您的表中有大量记录,并且自上次更新以来已更改其中几个记录时,这并不是一个好的解决方案。 - Mahmoud
谢谢!这个工作得非常好,比我预期的要快得多。你有没有想法为什么我的原始代码有问题? - squared
@squared 很高兴知道这对你有所帮助。你可以通过点击勾来给这个答案点赞并且接受它。然而,我不确定为什么你的旧程序不起作用。我猜想是语法问题。 - rev_dihazum
很遗憾,我还没有点赞的能力。 - squared
@squared 我认为你可以!你的声望超过了15;即18!顺便说一句,感谢接受。 - rev_dihazum
但这不是临时表。 - KD.S.T.

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接