使用 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 "MERGE INTO" 是不是进行了插入或更新

HSQLDB: INSERT INTO ... (SELECT NULL, * FROM) 导致“列名重复”

在 HSQLDB 中选择 100+ 百万行

HSQLDB 选择在 intellij IDEA 中显示没有数据

HSQLDB 中的原子插入/选择