【问题标题】:Apache Derby: Achieving 'SELECT INTO' behaviourApache Derby:实现“SELECT INTO”行为
【发布时间】:2014-07-26 05:38:24
【问题描述】:

在 MS SQL Server 中可以将查询结果存储到表中,最重要的是,让查询创建表:

SELECT an_existing_column
INTO table_xyz
FROM an_existing_table

这也可以在 MySQL 中使用:

CREATE TABLE table_xyz
SELECT an_existing_column
FROM an_existing_table

我搜索了Apache Derby Reference Guide,但找不到实现类似行为的方法。

有谁知道这在 Apache Derby 中是否可行?

【问题讨论】:

  • create table as select ... 是标准的 ANSI SQL。 select .. into ... 特定于 SQL Server。
  • @a_horse_with_no_name,ta。我从 Sybase 和 SQL Server 开始。清楚地学习非标准扩展...

标签: java sql jdbc derby


【解决方案1】:

将查询结果存储到表中:

INSERT INTO table_xyz (an_existing_column) SELECT an_existing_column FROM an_existing_table;

从另一个表创建一个表:

所有列:

CREATE TABLE table_xyz AS SELECT * FROM an_existing_table WITH NO DATA;

具体栏目:

CREATE TABLE table_xyz AS SELECT an_existing_column FROM an_existing_table WITH NO DATA;

【讨论】:

  • 太好了,这似乎有效。谢谢你。奇怪的是,我在参考指南中找不到WITH NO DATA 子句(还)。 +1
  • @hmjd Here 你可以在CREATE TABLE ... AS ... 标题下找到至少一点解释。
【解决方案2】:

它在JAVA DB中不起作用,正确的做法是:

对于所有列:

第 1 步:创建一个具有不同名称的新表。例如,my_new_table

CREATE TABLE my_new_table AS SELECT * FROM original_table WITH NO DATA;

此语句以相同格式从原始表创建一个新表,并且不复制任何数据。需要指定WITH NO DATA,因为它会创建一个具有相同列的新表。

第 2 步:使用 INSERT INTO 将数据从 orig_table 复制到 my_new_table

INSERT INTO my_new_table  SELECT * FROM orig_table.

然后您将复制所有数据。

【讨论】:

  • 不应该是第2步:INSERT INTO my_new_table SELECT * FROM orig_table
猜你喜欢
  • 2016-01-11
  • 2014-04-23
  • 2013-09-10
  • 2013-03-23
  • 1970-01-01
  • 1970-01-01
  • 2014-11-27
  • 2012-01-23
  • 2016-04-16
相关资源
最近更新 更多