【发布时间】:2011-07-22 17:05:12
【问题描述】:
我可以从使用with 子句形成的查询创建表吗?
【问题讨论】:
标签: sql oracle common-table-expression
我可以从使用with 子句形成的查询创建表吗?
【问题讨论】:
标签: sql oracle common-table-expression
当然:
CREATE TABLE t
AS
WITH some_data AS (
SELECT 1 as some_value
FROM dual
UNION ALL
SELECT 2
FROM dual
)
SELECT *
FROM some_data
【讨论】:
create table t as 之后的所有内容都应该放在 select * from (...here...) 中。就像@saleh helou 的回答一样。
CREATE TABLE table_name AS 语句基于 select 语句创建表。 with 子句的解决方案是:
CREATE TABLE t
AS
SELECT * FROM (
WITH some_data AS (
SELECT 1 as some_value
FROM dual
UNION ALL
SELECT 2
FROM dual
)
);
【讨论】:
对于多个 CTE(通用表表达式;即多个 WITH 子句),我发现相同的语法有效。即
CREATE TABLE schema.table_name as
WITH table1 as (SELECT 1),
table2 as (SELECT 2)
select * from table2
将从select 语句的schema 中创建table_name
【讨论】: