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