是否可以创建一个具有固定行数(该数字在另一个表中定义)和已定义列(col1和col2)的空表,然后将此空表中的某些行替换为我得到的行从选择?
我希望最终结构如下:
col1 col2
----------------
empty empty
val11 val21
val12 val22
empty empty
val13 val23
empty empty
我从另一个选择中取val11,val21 ....我希望这个空值的表只是本地的,而不是在其他任何地方创建它。
答案 0 :(得分:3)
您可以使用空字段创建一个包含可变数字(例如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
如果您需要以隔行扫描的方式更新某些记录,则可以依赖您的身份
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>
答案 1 :(得分:2)
我没有看到将固定数量的空记录插入&#34;替换&#34;他们以后。相反,一个更好的想法是只需要INSERT
你想要的记录,然后再添加一些空记录。
首先INSERT
您希望从另一个表中获取的记录:
INSERT INTO yourTable (col1, col2)
SELECT col1, col2
FROM anotherTable
然后INSERT
&#34;空&#34;记录:
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;