如果我們根據屬性位置以不同的順序放置屬性,請告訴我 Oracle 插入陳述句是否有效。我無法在開發環境中進行測驗,因此在直接推動 PROD 更改之前需要專家意見。請幫忙。
我有以下表格:
表A - col1,col2,col3,col4,col5
表 B - col1、col2、col4、col5
我需要從 tableB 中選擇不同的值并通過向 tableA 添加序列號來插入到 tableA 中。
由于不同的和序列號在插入陳述句中不能一起作業,我正在使用外部選擇陳述句。
請讓我知道以下 2 個選項中的哪一個有效???如果兩者都不起作用,那么也請提供您的建議。
選項 1 - 在最后的外部 select 陳述句中添加 nextval 并將 col3 作為插入中的最后一個位置
insert into tableA ( col1, col2, col4, col5, col3 ) select col1, col2, col4, col5, my_seq.nextval as col3 from ( select distinct col1, col2, col4, col5 from tableB );
選項 2- 在外部 select 陳述句中以相同的順序添加 nextval 并將 col3 保持在插入中的相同位置
insert into tableA ( col1, col2, col3, col4, col5 ) select col1, col2, my_seq.nextval as col3, col4, col5 from ( select distinct col1, col2, col4, col5 from tableB );
提前致謝!!
uj5u.com熱心網友回復:
兩者都會起作用。插入它們的順序無關緊要,只要您指定列名 (in insert into) 并在后面匹配它們select。
SQL> create sequence my_seq;
Sequence created.
SQL> create table tablea (deptno number, job varchar2(10), seq number);
Table created.
SQL> -- your first query
SQL> insert into tablea (deptno, job, seq)
2 select deptno, job, my_seq.nextval
3 from (select distinct deptno, job from emp);
9 rows created.
SQL> -- your second query
SQL> insert into tablea (seq, job, deptno)
2 select my_seq.nextval, job, deptno
3 from (select distinct deptno, job from emp);
9 rows created.
結果:
SQL> select * from tablea order by seq;
DEPTNO JOB SEQ
---------- ---------- ----------
20 CLERK 1
30 SALESMAN 2
20 MANAGER 3
30 CLERK 4
10 PRESIDENT 5
30 MANAGER 6
10 CLERK 7
10 MANAGER 8
20 ANALYST 9
20 CLERK 10
30 SALESMAN 11
20 MANAGER 12
30 CLERK 13
10 PRESIDENT 14
30 MANAGER 15
10 CLERK 16
10 MANAGER 17
20 ANALYST 18
18 rows selected.
SQL>
Why is it OK? Because there are 9 distinct combinations of [deptno, job] in Scott's EMP table.
SQL> select distinct deptno, job from emp;
DEPTNO JOB
---------- ---------
20 CLERK
30 SALESMAN
20 MANAGER
30 CLERK
10 PRESIDENT
30 MANAGER
10 CLERK
10 MANAGER
20 ANALYST
9 rows selected.
SQL>
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/435427.html
上一篇:在瀏覽器中從Javascript查詢本地網路上的Oracle資料庫
下一篇:SQL創建表時缺少括號
