Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 执行后复制表_Sql - Fatal编程技术网

Sql 执行后复制表

Sql 执行后复制表,sql,Sql,我想在执行该查询后创建新表 create table newTable as select * from oldTable 然而,这似乎不起作用。在执行一些查询之后,如何获取新表?我不确定您使用的是什么DBMS或您遇到的错误,因此我将尝试回答多个系统的问题 如果您使用的是Oracle或PostgreSQL(此规则可能适用于其他一些系统),那么您的语法似乎是正确的。只要确保你的新表还不存在,否则它就会出错。如果您试图插入到一个现有的表中(我认为情况并非如此),您可以尝试以下操作- INSERT

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

create table newTable as select * from oldTable

然而,这似乎不起作用。在执行一些查询之后,如何获取新表?

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

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

INSERT INTO newTable SELECT * FROM oldTable
另一方面,如果您使用的是T-SQL(SQL Server),则可以在新表中进行选择。新表将使用旧表的架构创建

有关INTO子句的更多信息,请访问

您的代码应该如下所示-

SELECT *
INTO newTable 
FROM oldTable
而且,指定列名和过滤器的工作方式也类似-

SELECT  Column1, Column2, Column3, ...
INTO    newTable 
FROM    oldTable
WHERE   <Filter Condition>
选择第1列、第2列、第3列。。。
变成牛顿表
从旧桌子
哪里

不管是什么情况,如果您指定详细信息,您都会得到更多帮助。

通常的语法如下:

CREATE TABLE new_table
  AS (SELECT * FROM old_table);
例如:

CREATE TABLE suppliers
  AS (SELECT id, address, city, state, zip
      FROM companies
      WHERE id > 1000);
尝试删除星号(*)并添加括号


阅读更多示例。

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

从表2中选择*进入表1

如果要复制所选列,请选择


选择Column1,column2,。。。从表2进入表1,其中………

您使用的是哪种DBMS?“似乎不工作”在任何DBMS中都不是有效的错误消息。@MeNoMore:当然,into关键字用于创建新表。如果在新表存在时运行查询,将抛出一个错误。如果Jays没有使用SQL Server呢?ANSI SQL标准指定了他/她正在使用的语法。@a_horse_和_no_name:编辑了我的答案,希望这更有用。遵守标准语法的不仅仅是Oracle。PostgreSQL和其他公司也做得很好。此外:PL/SQL仅用于存储过程。在存储过程之外,它被简单地称为SQL。select周围的括号是不必要的,
*
不会有什么区别。