数据库join 求救

angel6709 2010-04-21 03:03:35
现有表T1 ,T2
T1:
1 a
2 b
3 c
4 d


T2:

1 a
1 b
2 b
2 d
4 f


怎么得到这样的表:

1 a a
1 a NULL
1 NULL b
2 b b
2 b d
3 c NULL
4 d NULL
4 NULL f
...全文
126 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
vsts2010 2010-04-21
  • 打赏
  • 举报
回复
楼主的需求很怪啊,按照你的思路,对于t1和t2的第一列相等的数据,如果第二列也相等,就都显示出来,否则就显示为两行(但是那个 2 b d与此规则相反),按照这个规则,可以这样写:


create table t1
(
p int,
q char(1)
)
--delete * from t1
insert t1 (p, q) values (1, 'a')
insert t1 (p, q) values (2, 'b')
insert t1 (p, q) values (3, 'c')
insert t1 (p, q) values (4, 'd')

create table t2
(
p int,
q char(1)
)
--delete * from t2
insert t2 (p, q) values (1, 'a')
insert t2 (p, q) values (1, 'b')
insert t2 (p, q) values (2, 'b')
insert t2 (p, q) values (2, 'd')
insert t2 (p, q) values (4, 'f')

select *
from
(
select t1.p, qq1 = t1.q,
qq2 = case when t1.q=t2.q then t2.q else null end
from t1 left join t2
on t1.p = t2.p
union
select t2.p,
qq1 = case when t1.q=t2.q then t1.q else null end ,
qq2 = t2.q
from t1 left join t2
on t1.p = t2.p
) table1
where table1.p is not null



运行结果是这样:

p qq1 qq2
----------- ---- ----
1 NULL b
1 a NULL
1 a a
2 NULL d
2 b NULL
2 b b
3 c NULL
4 NULL f
4 d NULL
sxiaohui8709253 2010-04-21
  • 打赏
  • 举报
回复
去SQL板块发帖
mngzilin 2010-04-21
  • 打赏
  • 举报
回复
yangyang8848 2010-04-21
  • 打赏
  • 举报
回复
这个好像是折磨人的题阿~
cjcgy 2010-04-21
  • 打赏
  • 举报
回复
LZ
你这个逻辑本身就很不清晰。

比如:
T1:
1 a
T2:

1 a
1 b
这三行, 你最后得出结论是三行。
那么,
2 b

2 b
2 d
应该得到相同的3行。
可是你却忽然变成了要两行。

那么, 你要的到底是什么?
CalvinDo 2010-04-21
  • 打赏
  • 举报
回复
马老虎 2010-04-21
  • 打赏
  • 举报
回复
将帖子移动到sql版块!那sql高手多!
deknight 2010-04-21
  • 打赏
  • 举报
回复
帮顶...
周公 2010-04-21
  • 打赏
  • 举报
回复
感觉得多次join。
xt218218 2010-04-21
  • 打赏
  • 举报
回复
友情帮顶

110,565

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧