如:create table test(col1 int,col2 char(8)) 或 select * into newtable from 已经存在的表
不知楼主说的是否这样 select * into newtable from table1 union all select * from table2
SELECT * FROM ss UNION SELECT * FROM yy as BB
人员姓名 数学期成绩 a 50 b 70 c 98 ----------------------------- 人员姓名 语文 a 50 b 70 c 98 ---------------- 人员姓名 语文 数学期成绩 a 50 50 b 70 70 c 98 98
怎样用UNION建一个新表,并命名那?select * into tmp from ( select * from A union select * from B ) t
select * from (select 1 AS id union all select 2 union all select 3) as t
这样的效果 union无用 ,直接用连接就可以select a.人员姓名,a.数学期成绩,b.语文 from a,b where a.人员姓名 = b.人员姓名;这样得出的数据是正确的然后 select into
同一楼,就两种方法,create和select into
数学成绩表 人员姓名 数学期成绩 a 50 b 70 c 98 ----------------------------- 语文成绩表 人员姓名 语文 a 50 b 70 c 98 ---------------- 成绩表 人员姓名 语文 数学期成绩 a 50 50 b 70 70 c 98 98 -------------------------------------------------------------------------- select 人员姓名,语文,数学期成绩 into 成绩表 from (select a.人员姓名 人员姓名,语文,数学期成绩 from 数学成绩表 a,语文成绩表 b where a.人员姓名=b.人员姓名) c
select 人员姓名,语文,数学期成绩 into 成绩表 from (select a.人员姓名,语文,数学期成绩 from 数学成绩表 full outer jion 语文成绩表 on 数学成绩表.人员姓名=语文成绩表.人员姓名)
select a.人员姓名,b.语文,a.数学期成绩 into tmp from a,b where a.人员姓名 = b.人员姓名
create table cj1(人员姓名 varchar(8),数学期成绩 int) insert into cj1 select 'a',50 union select 'b',70 union select 'c',98 create table cj2(人员姓名 varchar(8),语文 int) insert into cj2 select 'a',50 union select 'b',70 union select 'c',98 /*---------------- 人员姓名 语文 数学期成绩 a 50 50 b 70 70 c 98 98 */ select * from cj1 select * from cj2 select cj1.人员姓名,语文,数学期成绩 from cj1,cj2 where cj1.人员姓名=cj2.人员姓名 drop table cj1,cj2 (3 行受影响)(3 行受影响) 人员姓名 数学期成绩 -------- ----------- a 50 b 70 c 98(3 行受影响)人员姓名 语文 -------- ----------- a 50 b 70 c 98(3 行受影响)人员姓名 语文 数学期成绩 -------- ----------- ----------- a 50 50 b 70 70 c 98 98(3 行受影响)
也可以这样: create table cj1(人员姓名 varchar(8),数学期成绩 int) insert into cj1 select 'a',50 union select 'b',70 union select 'c',98 create table cj2(人员姓名 varchar(8),语文 int) insert into cj2 select 'a',50 union select 'b',70 --union select 'c',98 /*---------------- 人员姓名 语文 数学期成绩 a 50 50 b 70 70 c 98 98 */ select * from cj1 select * from cj2 select cj1.人员姓名,isnull(语文,0) as 语文,isnull(数学期成绩,0) as 数学期成绩 from cj1 full join cj2 on cj1.人员姓名=cj2.人员姓名 drop table cj1,cj2 (3 行受影响)(2 行受影响) 人员姓名 数学期成绩 -------- ----------- a 50 b 70 c 98(3 行受影响)人员姓名 语文 -------- ----------- a 50 b 70(2 行受影响)人员姓名 语文 数学期成绩 -------- ----------- ----------- a 50 50 b 70 70 c 0 98(3 行受影响)
select cj1.人员姓名,isnull(语文,0) as 语文,isnull(数学期成绩,0) as 数学期成绩 into newtable from cj1 full join cj2 on cj1.人员姓名=cj2.人员姓名
实现union的效果,而不是使用union实现选出结果后,into newtable
先查询表,后直接select col1,col2 into newtable from oldtable
或
select * into newtable from 已经存在的表
select * into newtable from table1
union all select * from table2
UNION
SELECT * FROM yy
as BB
a 50
b 70
c 98
-----------------------------
人员姓名 语文
a 50
b 70
c 98
----------------
人员姓名 语文 数学期成绩
a 50 50
b 70 70
c 98 98
(
select * from A
union
select * from B
) t
人员姓名 数学期成绩
a 50
b 70
c 98
-----------------------------
语文成绩表
人员姓名 语文
a 50
b 70
c 98
----------------
成绩表
人员姓名 语文 数学期成绩
a 50 50
b 70 70
c 98 98
--------------------------------------------------------------------------
select 人员姓名,语文,数学期成绩 into 成绩表 from
(select a.人员姓名 人员姓名,语文,数学期成绩 from 数学成绩表 a,语文成绩表 b where a.人员姓名=b.人员姓名)
c
(select a.人员姓名,语文,数学期成绩 from 数学成绩表 full outer jion 语文成绩表 on 数学成绩表.人员姓名=语文成绩表.人员姓名)
insert into cj1
select 'a',50
union select 'b',70
union select 'c',98
create table cj2(人员姓名 varchar(8),语文 int)
insert into cj2
select 'a',50
union select 'b',70
union select 'c',98
/*----------------
人员姓名 语文 数学期成绩
a 50 50
b 70 70
c 98 98 */
select * from cj1
select * from cj2
select cj1.人员姓名,语文,数学期成绩 from cj1,cj2 where cj1.人员姓名=cj2.人员姓名
drop table cj1,cj2
(3 行受影响)(3 行受影响)
人员姓名 数学期成绩
-------- -----------
a 50
b 70
c 98(3 行受影响)人员姓名 语文
-------- -----------
a 50
b 70
c 98(3 行受影响)人员姓名 语文 数学期成绩
-------- ----------- -----------
a 50 50
b 70 70
c 98 98(3 行受影响)
create table cj1(人员姓名 varchar(8),数学期成绩 int)
insert into cj1
select 'a',50
union select 'b',70
union select 'c',98
create table cj2(人员姓名 varchar(8),语文 int)
insert into cj2
select 'a',50
union select 'b',70
--union select 'c',98
/*----------------
人员姓名 语文 数学期成绩
a 50 50
b 70 70
c 98 98 */
select * from cj1
select * from cj2
select cj1.人员姓名,isnull(语文,0) as 语文,isnull(数学期成绩,0) as 数学期成绩 from cj1 full join cj2 on cj1.人员姓名=cj2.人员姓名
drop table cj1,cj2
(3 行受影响)(2 行受影响)
人员姓名 数学期成绩
-------- -----------
a 50
b 70
c 98(3 行受影响)人员姓名 语文
-------- -----------
a 50
b 70(2 行受影响)人员姓名 语文 数学期成绩
-------- ----------- -----------
a 50 50
b 70 70
c 0 98(3 行受影响)
from cj1 full join cj2
on cj1.人员姓名=cj2.人员姓名
先查询表,后直接select col1,col2 into newtable from oldtable