使用 HSQLDB 选择 INTO
Posted
技术标签:
【中文标题】使用 HSQLDB 选择 INTO【英文标题】:SELECT INTO with HSQLDB 【发布时间】:2014-04-09 02:14:44 【问题描述】:我正在尝试根据选择结果创建一个新表。这适用于 SQL Server:
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 从选择中创建表?
【问题讨论】:
【参考方案1】:好的,我找到了更简单的方法。
select * into t_bckp FROM t;
这很有趣。
【讨论】:
对我不起作用:SQL Error [42581]: unexpected token: INTO required: FROM
检查您的驱动程序版本。我正在使用 HsqlDB server-2.3.3 和驱动程序类 org.hsqldb.jdbc.JDBCDriver。【参考方案2】:
manual has an example:
CREATE TABLE t (a, b, c) AS (SELECT * FROM atable) WITH DATA
HSQLDB 需要括号括起来(与所有其他 DBMS 不同),它还需要 WITH DATA
子句
【讨论】:
太棒了!我错过了WITH DATA
部分,只是找不到任何文档如何做到这一点。非常感谢。以上是关于使用 HSQLDB 选择 INTO的主要内容,如果未能解决你的问题,请参考以下文章
如何知道 Hsqldb "MERGE INTO" 是不是进行了插入或更新
HSQLDB: INSERT INTO ... (SELECT NULL, * FROM) 导致“列名重复”