0

我想在执行该查询后创建新表

create table newTable as select * from oldTable

但是,这似乎不起作用。执行一些查询后如何获取新表?

4

3 回答 3

1

我不确定您使用的是什么 DBMS 或遇到了什么错误,因此我将尝试为多个系统回答。

如果您使用的是 Oracle 或 PostgreSQL(可能还有一些其他系统适用此规则),那么您的语法似乎是正确的。只要确保你的新表还不存在——否则它会出错。如果您尝试插入现有表 - 但是我认为情况并非如此 - 您可以尝试类似 -

INSERT INTO newTable SELECT * FROM oldTable

另一方面,如果您使用的是 T-SQL (SQL Server),您可以 SELECT INTO 新表。新表将使用旧表的模式创建。

您可以在MSDN Library阅读更多关于 INTO 条款的信息。

您的代码应如下所示 -

SELECT *
INTO newTable 
FROM oldTable

而且,指定列名和过滤器也以类似的方式工作 -

SELECT  Column1, Column2, Column3, ...
INTO    newTable 
FROM    oldTable
WHERE   <Filter Condition>

无论如何,如果您指定详细信息,您将获得更多帮助。

于 2013-02-01T06:02:45.403 回答
1

一般的语法如下:

CREATE TABLE new_table
  AS (SELECT * FROM old_table);

例如:

CREATE TABLE suppliers
  AS (SELECT id, address, city, state, zip
      FROM companies
      WHERE id > 1000);

尝试删除星号 (*) 并添加括号。

阅读此处了解更多示例。

于 2013-02-01T06:04:00.167 回答
0

正如您所说,您想在执行后将值复制到新表中是否使用游标运行存储过程让游标关闭然后使用查询如下

从表2中选择*进入表1

如果你想复制选定的列去

从表 2 中选择 Coloumn1 ,column2,... 到 table1 中......

于 2013-02-01T07:29:01.140 回答