在线等,急求SQL

来源:百度知道 编辑:UC知道 时间:2024/06/25 08:39:57
现在我有两个表,表A
name age city
zhang 20 beijing
zhang 19 shanghai
zhang 21 chongqing
li 20 beijing
wang 21 henan
wang 22 shanghai
li 19 henan

表B
name age city
zhang 20 beijing
li 19 henan
zhao 20 beijng

我要得到的 是这么一个表

name ageA cityA ageB cityB
zhang 20 beijing 20 beijing
zhang 19 shanghai null null
zhang 21 chongqing null null
li 20 beijing 20 henan
li 19 henan null null
wang 21 henan null null
wang 22 shanghai null null
zhao null null 20 beijing
请问 各位这个SQL怎么写,非常着急! 兄弟们仔细看下我生成的表,不是简单的多对多关系JOIN一下就成了。
如果表B中是
zhang 20 beijing
zhang 19 hebei

那么最后生成的就是

zhang 20 beijing 20 beijing
zhang 19 shanghai 19 hebei
zhang 21 chongqing null null

我用的是sqlserver

oulyzarcihsow chenhaiyang108两位兄弟的答案比较接近

不过得到的结果集是

两个表名分别是ta,tb。
sql代码如下:
declare @t table(name varchar(max) null,ageA varchar(max) null,cityA varchar(max) null,ageB varchar(max) null,cityB varchar(max) null)
insert into @t select ta.name,ta.age,ta.city,tb.age,tb.city from ta left join tb on ta.name=tb.name
insert into @t select tb.name,ta.age,ta.city,tb.age,tb.city from ta right join tb on ta.name=tb.name
select distinct * from @t

你这题目有问题
我只看了一部分,你的结果中不可能出现以下数据
li 20 beijing 20 henan
li 19 henan null null

SELECT B.NAME,A.AGE AS AGEA,B.AGE AS AGEB
FROM B LEFT OUTER JOIN A ON B.NAME = A.NAME AND B.AGE=A.AGE
大概这个样子,你用视图编辑器编辑一下就好了

简单了,楼主接答案:

select a.name,a.age AgeA,a.city CityA,b.age AgeB,b.city CityB
from a left join b on a.name=b.name and a.age=b.age

select A.name,A.age as ageA,A.city as cityA,b.age as ageB,b.city as cityB from A left join B on A.name=B.name and a.age=b.age

楼主你的需求一直在变化!!!!!!!!
不信你自己看看