求SQL语句,有难度的。能否实现都成问题。(50分)

  • 主题发起人 主题发起人 pnljh
  • 开始时间 开始时间
P

pnljh

Unregistered / Unconfirmed
GUEST, unregistred user!
有两个毫不相干的表,要求用sql语句把这两个表并起来,例如:
表A有字段Field1,表B有字段Field2,表A和表B的记录数可能不一样。
设表A有如下记录
Field1
'ab'
'cc'
表B有如下记录
Field2
'f'
要求并出如下结果:
Field1 Field2
'ab' 'f'
'cc'
记录数不足的将其字段内设为空。必须保持记录的顺序不变。
 
select identity(int,1,1) as id, field1 from a into tempa
select identity(int,1,1) as id, field2 from b into tempb
select a.field1,b.field2 from tempa a left outer join tempb b on a.id=b.id
 
关系型数据库,就是靠关系查询的,没关系恐怕不行吧
 
create table table3 (field1,field2 )
insert into table3 (field1,field2)
select table1.field1,table2.field2 from table1,table2
OK?
 
用一个union不行吗?

select a=filed1,b='' from table1
union
select a='',b=field2 from table2
 
union是并到同一个字段里,我要求的是横着并。
 
sql 有一个字符函数可以.函数不记得了叫什么了
 
没有这样的SQL语句!!!可用SQL块完成
 
select identity(int,1,1) as autoid, field1 into #A_tmp from A
select identity(int,1,1) as autoid, field2 into #B_tmp from B
select top 0 AA.autoid as autoid,AA.field1 as field1, BB.field2 as field2 into #all_tmp from #A_tmp AA,
#B_tmp BB where AA.autoid=BB.autoid

insert into #all_tmp(field1,field2)
select AA.field1,BB.field2 from #A_tmp AA,#B_tmp BB where AA.autoid=BB.autoid

insert into #all_tmp(field1,field2)
select AA.filed1,null from #A_tmp AA where AA.autoid not in(select autoid from #all_tmp)

insert into #all_tmp(field1,field2)
select null,BB.filed2 from #B_tmp BB where BB.autoid not in(select autoid from #all_tmp)

select field1,field2 from #all_tmp
绝对可以的
 
To tangzwei:
你的语法是SQL Server的吧,我工作用的是oracle,不知道有什么标准的sql语句来
实现。
 
多人接受答案了。
 
后退
顶部