2014-03-06 22 views
3

我想从选择的结果创建一个新表。这适用于SQL Server:选择与HSQLDB

SELECT * INTO newTable FROM (SELECT col1, col2, col3 FROM oldTable) x; 

现在,我想用HSQLDB(版本2.2)来达到完全相同的效果。我曾尝试过几种形式,如

SELECT * INTO newTable FROM (SELECT col1, col2, col3 FROM oldTable); 
SELECT INTO newTable FROM SELECT col1, col2, col3 FROM oldTable; 
CREATE TABLE newTable AS SELECT col1, col2, col3 FROM oldTable; 

所有这些变体都会导致某种形式的语法错误。如何使用HSQLDB从select中创建表?

回答

2

manual has an example此:

CREATE TABLE t (a, b, c) AS (SELECT * FROM atable) WITH DATA 

HSQLDB 要求各地选择括号(不同于所有其他DBMS),它也需要WITH DATA条款

+0

太棒了!我错过了'WITH DATA'部分,并且找不到任何文档如何操作。非常感谢。 – Jack

0

好,我觉得很简单的方法来做到这一点。

select * into t_bckp FROM t; 

它很有趣。

+1

不适用于我:'SQL错误[42581]:意外标记:INTO必需:FROM' – golimar

+0

检查您的驱动程序版本。我使用的是HsqlDB server-2.3.3和驱动程序类 org.hsqldb.jdbc.JDBCDriver。 –