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

posted @ 2020-04-09 18:56  冬日的暖阳  阅读(7295)  评论(0编辑  收藏  举报