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>
是否可以创建一个具有固定行数(该数字在另一个 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>