2012-05-12 46 views
11

在SQL中,Select into ...将行复制到不同的(备份)表中。如果备份表具有不同的结构(或不同的列名),这可能吗?如果不是,那么实现这一目标的最好方法是什么?选择到具有不同列名的表中

这是我想要做的:TableA有列a1,a2,a3。我想从这个表中复制一些行到另一个表TableB,它有列b1,b2,b3,b4。的a1内容进入b1a2b2

+0

SQL有哪些味道?唯一可以用SELECT..INTO找到的是MS-SQL,它的文档意味着它将创建一个新表 - 它应该总是具有“正确的”结构。 – millimoose

+0

谢谢你的观点。我正在研究sqlite。我不确定是否“Select into ...”在sqlite中有效。我刚刚尝试过,它不在sqlite中工作。然而,“插入..”适用于此。 – zolio

回答

33

列名没有在所有问题,只要在数据类型比赛。

如果列的数据类型不匹配,请尝试相应地转换值。 只需尝试与小的虚拟桌子。务必明确列出目标列以避免混淆。像这样:

INSERT INTO TableB (b1, b2, b3) 
SELECT a1, a2, a3 
FROM TableA 
WHERE <some condition>; 

SQLite手册中的更多细节here

+0

着我们这样做没有指定这样的列名... INSERT INTO payment_reject_reasons SELECT * FROM 'de_list_reasons' 这给了我一个错误... – mahen3d

+1

@ user1179459:你可以* *做到这一点,如果行类型比赛。如果你得到一个错误,他们显然不会。此外,这种形式仅适用于临时命令和特殊情况。通常情况下,你应该拼出所涉及的列,所以如果你添加一列到其中一个表,命令不会中断。我添加了一个指向手册的链接。 –

相关问题