使用union查询两张表数据的时候如何把查询的数据存放到临时表中,且为临时表创建主键,求sql语句

2024-12-15 04:29:55
推荐回答(3个)
回答1:

一条语句只能做到将表的数据放到临时表,但是不能为临时表创建主键的.
比如:create table temp_table as select * from table;
如果要创建主键的话,就只能写到一个PL/SQL块里面
比如:
declare
begin
execute immediate 'create table temp_table as select * from table';
execute immediate 'alter table temp_table add constraint PK_id primary key on (col_id) ';
end;

回答2:

先创建一个序列,你先要保证你这个union的两个查询列完全一致,
先创建一个临时表A ,
CREATE TABLE LINSHI_A AS SELECT 列1,列2 FROM TABLE1 UNION SELECT 列1,列2 FROM TABLE2
再创建一个临时表
CREATE TABLE LINSHI_B AS SELECT 序列.NEXTVAL ID(主键名),列1,列2 FROM LINSHI_A
这样LINSHI_B就有了主键,主键名是ID

希望可以帮到你哦!

回答3:

select * into #t from a union select * from b --前提两表列的结构要一致,可以将列名一一列出
alter table #t add constraint PK__#t__id primary key on (id)