关于SQL的学习笔记

将两次查询的记录结果混和成一个结果进行输出

中心思想在于将两次查询的结果分别作为一个新的表,将2张新表尽心一次混和查询,一共至少3次查询,成功输出结果表

基本结构为
select * from (select * from datatable1)

下面是我的例子:
select DISTINCT * from (
select A.c as c,A.a as a,A.b as b from test_GROUP_BY_1 as A
inner join
test_GROUP_BY_2 as B on
A.c = B.C
left join
test_GROUP_BY_3 as C on
A.c = C.c
) as Test1
left join
(select c,cnt from (
select A.c as c,count(C.c) as cnt from test_GROUP_BY_1 as A
inner join
test_GROUP_BY_2 as B on
A.c = B.C
left join
(select c,b from test_GROUP_BY_3 )as C on
A.c = C.c
group by A.c) as Test) as Test2 on
Test1.c = Test2.c

这样将两个部分通过SQL合并起来,其实是一种比较麻烦的做法,这个功能能在程序里面实现,不过在有2种状况可能用这种方式更好.

1.当我们的程序架构已经固定,你能传递给表示层的数据必须是一个而不是两个datatabel或者dataset的时候,我们不得不在查询阶段将两组数据合并.

2.2组数据是有联系的,如果第二组数据是依赖于第一组数据,同时再表示层的初始化的时候,有些控件必须考第二组数据来确定如何初始化,这样我们在表示层合并并且判断第二组数据可能会更加麻烦.所以这个时候直接把两组数据在数据层合并起来,传给表示层,表示层所需要的仅仅是一个判断,而不需要在遍历第一组数据而安排第二组数据了.


上例分组采用的第一个表的分组,但是count的时候确是count的第三个表.这里如果我们count第三个表,同时以第三个表分组,得到的最后cnt回产生一个null值.如果按照上例,cnt永远不会出现null,最多是0

比如图书馆,图书馆里面同一个名字的书可能有N本,这个时候第三张表记录的count数字表示的是目前馆内还有几本该书。
书的数目应该最少为0,而不是null
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值