SQL 创建空 table 并用信息填充一些行

SQL create empty table and fill some rows with info

是否可以创建一个具有固定行数(该数字在另一个 table 中定义)和定义的列(col1 和 col2)的空 table,然后替换其中的一些这个空 table 中的行与我从 select?

中得到的行

我希望最终的结构是这样的:

col1        col2
----------------
empty       empty
val11       val21
val12       val22
empty       empty
val13       val23
empty       empty

我从另一个 select 中获取 val11、val21....。我希望这个具有空值的 table 只是本地的,也就是不要在其他任何地方创建它。

我看不出将固定数量的空记录插入 "replace" 之后有什么意义。相反,更好的办法是仅 INSERT 您想要的记录,然后再添加一些空记录。

首先INSERT你想要的其他记录table:

INSERT INTO yourTable (col1, col2)
SELECT col1, col2
FROM anotherTable

然后 INSERT "empty" 记录:

INSERT ALL
INTO yourTable (col1, col2) VALUES (null, null)
INTO yourTable (col1, col2) VALUES (null, null)
INTO yourTable (col1, col2) VALUES (null, null)
...
SELECT 1 FROM DUAL;

您可以创建一个 table 具有可变数量(比如 5)行的空字段; 关于排序,你不能使用任何内部排序,所以你需要添加一个字段来保存行的位置。 例如:

SQL> create table tab_5(id number, col1 varchar2(50), col2 varchar2(50))
  2  /

Table created.

SQL> insert into tab_5
  2  select level, null, null
  3  from dual
  4  connect by level <= 5
  5  /

5 rows created.


SQL> select * from tab_5 order by id;

        ID COL1                 COL2
---------- -------------------- --------------------
         1
         2
         3
         4
         5

如果需要隔行更新一些记录,可以依赖你的id

SQL> update tab_5
  2  set col1 = 'something',
  3      col2 = 'something else'
  4  where mod(id, 2) = 0;

2 rows updated.

SQL> select * from tab_5 order by id;

        ID COL1                 COL2
---------- -------------------- --------------------
         1
         2 something            something else
         3
         4 something            something else
         5

SQL>