解决方法
您可以在一个INSERT和SELECT中一起完成所有操作.
即假设你有以下表格定义和填充的数据:
create table original ( id serial,name text,location text ); INSERT INTO original (name,location) VALUES ('joe','London'),('james','Munich');
然后你可以在不使用TEMP TABLE的情况下INSERT执行你正在谈论的那种切换,如下所示:
INSERT INTO original (name,location) SELECT 'john',location FROM original WHERE name = 'joe';
这是一个sqlfiddle.
这也应该更快(尽管对于微小的数据集在绝对时间方面可能不是很大),因为它只执行一个INSERT和SELECT而不是额外的SELECT和CREATE TABLE加上UPDATE.