mysql left join 左连接查询关联n多张表
来源:互联网 发布:papago翻译软件 编辑:程序博客网 时间:2024/05/22 03:43
最近用mysql 多表关联查询比较多,特此总结一下left join用法,拓展下left join将多表关联。
left join 左连接即以左表为基准,显示坐标所有的行,右表与左表关联的数据会显示,不关联的则不显示。关键字为left join on。
**基本用法如下:
select table a left join table b on a.id = b.ta_id**
注意:1⃣️其中on后面关联的字段应该是同一字段(两表关联的外键)
2⃣️由于以左表为基准,左表一条记录如果对应右表多条记录,那查出的数据中右表的数据也只显示一条,如果要都显示,可以用group_contact()将字段用逗号隔开显示在一条记录上。所以右表不管有几张,如果和左表都是一对一关系,则没问题,存在一对多关系时,需要一定的处理。
三表关联 则如下:
select table a left join table b(left join table c on b.id = c.tb_id) on a.id = b_ta.id
再拓展一下,如果关联七八张表,就像下面这条sql,用法其实无非就像三表关联一样,一层套一层,只不过关系要理顺好。
SELECT GROUP_CONCAT(u.stuffName), GROUP_CONCAT(ee.id), ee.applyTime, p.orderState, GROUP_CONCAT( concat( s.departureAirportCode, '-', s.landingAirportCode ) ), p.pnr, sns.c, sns.b, sns.a, ee.pnr newp, GROUP_CONCAT( CONCAT( s.departureDate, ' ', s.departureTime ) ), GROUP_CONCAT(s.flightNum), GROUP_CONCAT(s.seatClass), c.rebookintSumFee, c.customerRebookintFee, c.amountReceivable, o.orderNum, comp.companycode, comp.companyNameFROM endrose eeLEFT JOIN passenger p ON ee.passengerId = p.idLEFT JOIN segment s ON s.endroseId = ee.idLEFT JOIN costfee c ON c.endroseId = ee.idLEFT JOIN( SELECT ns.passengerId, GROUP_CONCAT(ns.flightNum)b, GROUP_CONCAT(ns.seatClass)a, GROUP_CONCAT( CONCAT( ns.departureDate, ' ', ns.landingDate ) )c FROM segment ns WHERE ns.orderState = 0 GROUP BY ns.passengerId)sns ON sns.passengerId = ee.passengerIdLEFT JOIN( passenger passe LEFT JOIN airticketorder o ON passe.orderId = o.id)ON passe.id = ee.passengerIdLEFT JOIN( passenger pass LEFT JOIN `user` u ON pass.stuffUUID = u.id)ON pass.id = ee.passengerId LEFT JOIN( passenger passen LEFT JOIN( airticketorder ao left join( `user` ua left join company comp on comp.id = ua.companyId )ON ao.bookerstuffId = ua.id ) ON passen.orderId = ao.id) ON passen.id = ee.passengerIdgroup by ee.applyTime
这条sql中尤其是最后一个left join,关联了好几张表,要好好理顺才行。
写的时候从外层往里写,一层一层left join,才不容易出错。
1 0
- mysql left join 左连接查询关联n多张表
- 【MYSQL】left join on(左连接)
- Hql 左连接 (left join 非表关联)
- sql LEFT JOIN RIGHT JOIN(左连接)(mysql)
- Hibernate中用left join(左外连接)查询映射中没有关联关系的两个表记录问题
- Sql查询左连接(left join),右连接(right join),内连接(inner join)
- 左外连接查询语句(left outer join)
- 两个sql查询语句之间的左连接left join
- Linq 左连接 left join
- Hibernate left join(左连接)
- Linq 左连接 left join
- LEFT JOIN左连接示例
- mysql左连接left join右连接 right join 内连接 inner join笔记
- mysql左链接 left join
- MySQL多表连接查询Left Join,Right Join
- MySQL多表连接查询Left Join,Right Join
- 【转】MySQL多表连接查询Left Join,Right Join
- Ibatis left join关联查询
- nested exception is java.lang.NoClassDefFoundError: com/mchange/v2/ser/Indirector
- 第24日:实施质量保证 和 组建项目团队
- ruby爬虫日记1
- java---验证码技术演示网页显示(XML 网页 javaservlet)
- 从零开始学_JavaScript_系列(26)——只需要前端知识的ajax教程
- mysql left join 左连接查询关联n多张表
- HDU题目分类
- HDU 1263 水果
- Java中的UDP编程
- js 基础 ---实现放大镜的效果
- 深度学习在携程攻略社区的应用
- git快速入门(二)基本的三个命令
- 多重部分和问题
- HDU4706 Children's Day