mysql 链接两个结果集_left join连接2个查询结果集的用法(MySQL可以)

一、连接两个查询结果

left join 是left outer join的简写,left join可以连接2个查询结果集。我们通常的用法

SELECT

S.STUDENT_NAME STUDENT_NAME, S.STUDENT_NO STUDENT_NO, F.ADDRESS ADDRESS

FROM(

SELECT

G.GRADE_NO GRADE_NO, A.ADDRESS

FROM

GRADE G, ADDRESS A

WHERE

G.GRADE_NO = A.GRADE_NO

) F LEFT JOIN STUDENT S ON F.STUDENT_NO = S.STUDENT_NO

这是我们最常见的用法,基本上这种连接都能满足一般的查询需求。这里还要说明

一下,LEFT JOIN是先连接,后过滤。也就是说,在WHERE条件过滤之前,已经进行了连

接。假如我们现在有这样一种场景,我们需要连接STUDENT表中的所有2016届的学生,

而不是连接STUDENT表中所有的记录。那么我们就需要在连接之前查询出来所有2016届

的学生。这种场景,left join也能轻松搞定。如下:

SELECT

P.STUDENT_NAME STUDENT_NAME, P.STUDENT_NO STUDENT_NO, F.ADDRESS ADDRESS

FROM(

SELECT

G.GRADE_NO GRADE_NO, A.ADDRESS

FROM

GRADE G, ADDRESS A

WHERE

G.GRADE_NO = A.GRADE_NO

) F LEFT JOIN

(

SELECT

S.STUDENT_NO STUDENT_NO, S.STUDENT_NAME STUDENT_NAME

FROM

STUDENT S

WHERE

S.YEAR = '2016'

)P ON P.STUDENT_NO = F.STUDENT_NO

————————————————

版权声明:本文为CSDN博主「春秋战国程序猿」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/reggergdsg/article/details/66475187

二、连接多个查询结果

项目中遇到这样的问题,需要按指定的时间区间从10个数据库表中查询到关于10个司法局的业务数量,案件数量等11列信息。再对这些结果排序。

那么我们怎么通过一个SQL语句来解决呢?

下面介绍下SQL方法:

select

a.*,

a.id,

b.id,

c.price

from author a

left join book b on a.id=b.id

left join order c on a.id=c.id

使用Left join -on语句将3张表链接到了一起。对于项目的解决办法,可以将book,order,auther替换成sql语句,即select出来的表,再做一次left join

SQL语句如下

1 select

2 a.MEDIATIONCOMMITTEE,

3 a.tiaojieaj,

4 b.shangbaosl,

5 c.paichafk,

6 d.zixunrz,

7 e.chunjufw,

8 f.faxuanhd

9 from (select MEDIATIONCOMMITTEE,count(1) as tiaojieaj from MBM_CASE where DATEACCEPTED <= to_date('2018-05-10 00:00:00','yyyy-mm-dd hh24:mi:ss') group by MEDIATIONCOMMITTEE) a

10 left join (select MEDIATIONCOMMITTEE,count(1) as shangbaosl from MCS_MEDIATIONCASE where REPORTDATE between to_date('2016-01-10 00:00:00','yyyy-mm-dd hh24:mi:ss') and to_date

('2018-05-10 00:00:00','yyyy-mm-dd hh24:mi:ss') and STATUS !='ToBeReported' group by MEDIATIONCOMMITTEE) b

11 on a.MEDIATIONCOMMITTEE=b.MEDIATIONCOMMITTEE

12 left join (select MEDIATIONCOMMITTEE,count(1) as paichafk from CDS_INVESTIGATIONFEEDBAC where DATE_ between to_date('2016-01-10 00:00:00','yyyy-mm-dd hh24:mi:ss') and to_date

('2018-05-10 00:00:00','yyyy-mm-dd hh24:mi:ss') group by MEDIATIONCOMMITTEE) c

13 on a.MEDIATIONCOMMITTEE=c.MEDIATIONCOMMITTEE

14 left join (select MEDIATIONCOMMITTEE,count(1) as zixunrz from AMS_VILLAGESERVICELOG where CREATEDATE between to_date('2016-01-10 00:00:00','yyyy-mm-dd hh24:mi:ss') and to_date

('2018-05-10 00:00:00','yyyy-mm-dd hh24:mi:ss') group by MEDIATIONCOMMITTEE ) d

15 on a.MEDIATIONCOMMITTEE=d.MEDIATIONCOMMITTEE

16 left join (select MEDIATIONCOMMITTEE,count(1) as chunjufw from WWS_CONSULT where DATE_ between to_date('2016-01-10 00:00:00','yyyy-mm-dd hh24:mi:ss') and to_date

('2018-05-10 00:00:00','yyyy-mm-dd hh24:mi:ss') group by MEDIATIONCOMMITTEE ) e

17 on a.MEDIATIONCOMMITTEE=e.MEDIATIONCOMMITTEE

18 left join (select MEDIATIONCOMMITTEE,count(1) as faxuanhd from WWS_LEGALACTIVITY where STARTDATE between to_date('2016-01-10 00:00:00','yyyy-mm-dd hh24:mi:ss')

and to_date('2018-05-10 00:00:00','yyyy-mm-dd hh24:mi:ss') group by MEDIATIONCOMMITTEE) f

19 on a.MEDIATIONCOMMITTEE=f.MEDIATIONCOMMITTEE

————————————————

版权声明:本文为CSDN博主「adam-liu」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/qq_41664845/article/details/80763112

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值