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

如题所述

一条语句只能做到将表的数据放到临时表,但是不能为临时表创建主键的.
比如: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;追问

虽然结果不是想要的,也很感谢你的回答...

来自:求助得到的回答
温馨提示:内容为网友见解,仅供参考
第1个回答  2013-03-13
先创建一个序列,你先要保证你这个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

希望可以帮到你哦!
第2个回答  推荐于2018-05-07
select * into #t from a union select * from b --前提两表列的结构要一致,可以将列名一一列出
alter table #t add constraint PK__#t__id primary key on (id)追问

#t代表什么意思,能具体点吗,直接写入#t会出现错误的,,新手请指教

追答

额。。sqlserver的临时表,看来语法不通啊呵呵

追问

哦,表是不存在的,不用create table #t,这句就会提示表不存在了,我想在一条sql语句中来实现能实现吗?且sql语句的执行结果是新表的内容。谢谢了、。。。

追答

你是什么数据库啊?sqlserver中select into语句就是创建并填充表的方法
其他的数据库的话我就不清楚是否有这样的语句了

追问

mysql数据库

追答

try

Create table new_table_name (Select * from old_table_name);

使用union查询两张表数据的时候如何把查询的数据存放到临时表中,且为...
一条语句只能做到将表的数据放到临时表,但是不能为临时表创建主键的.比如: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 t...

两张表用union合并后如何放到临时表中
如果#temp已经建好了表:insert into #temp select * from (select * from V_LW_YouhuiDetailByShenFenZheng union all select * from V_LW_YouhuiDetailByzhengjian );commit;如果#temp还没有建:create table #temp as select * from (select * from V_LW_YouhuiDetailByShenFenZheng union all ...

如何把存储过程查询出来的结果放到一个临时表里面
1 先把临时表创建好,用insert into #tmp exec myProc 2 不建临时表,用openrowset select * into # from openrowset('SQLOLEDB','AVAST';'sa';'lichao','exec Northwind..myProc')--存储过程钱加上数据库名

SQL存储过程返回的两个结果集,怎么插入到临时表?
在接收结果的过程或代码中循环读取结果数据,再插入即可,又或者你可以在将要返回结果集的存储过程中直接插入临时表

如何在查询结果中插入临时表?
1、打开sql server management studio,点击新建查询,创建一个查询。2、创建一个临时表,其中Id是自增字段,第一条记录是1,第二条记录是2,自动增加,这个一般用来作标识,可以循环,其他字段是实际上循环时要取用的数据。3、然后插入数据。4、接着用一个循环,取出数据,并进行相应逻辑处理。5、...

SQL 两张表合并 (两张表的列都相同)
可以参考下面的方法:1、第一种,用一张临时表,把所有数据都放在一张表里 INSERT INTO QunList SELECT * FROM QunList89,90,91,92;再在QunList中查询 2、第二种,用 UNION ALL方式查询 SELECT * FROM QunList89 UNION ALL SELECT * FROM QunList90;...

vb SQL多表联合查询问题(Access数据库表)
1.子查询:就像badkano 回答的。不过那个new_table 名称要你自己改的。不能原样不动。这个表你自己根据那几个表的结构建,你不是说那几个表完全一样吗。2.在程序代码中用循环语句分几次查询,最后把查询结果合到一块。3.用语句建立一个临时表,将那些表的内容都查询到临时表里面。

求解SQL数据库两张表数据的排序问题
然后利用这个临时表 我进行排序 看下面 select ID=Dept_ID,Name=Dept_Name 这句的意思 理解的吧 选取临时结果集的2个字段,注意这里的Dept_ID和Dept_Name分别语句包含了unit_ID 和unit_Name(这个自己执行下临时结果集就知道了)我们重点来说排序 order by left(Dept_ID,3) asc,flag asc,Dept_ID ...

求sql语句两个表合并
from a union select p, j from b) A ---将两个表的所有数据连接,组成临时表 group by A.p having count(*) = 1) --根据产品分组,将临时表A中的a,b单独拥有产品列出 union (select a.p, (select a.j - b.j from a, b where a.p = bj) j from a, b where a.p =...

mysql数据库怎么把查询出来的数据生成临时表
MySQL 需要创建隐式临时表来解决某些类型的查询。往往查询的排序阶段需要依赖临时表。例如,当您使用 GROUP BY,ORDER BY 或DISTINCT 时。这样的查询分两个阶段执行:首先是收集数据并将它们放入临时表中,然后是在临时表上执行排序。对于某些 UNION 语句,不能合并的 VIEW,子查询时用到派生表,多表 ...

相似回答