MySQL涉及4张表的级联查询

inner join的使用

数据库表之间的级联查询使用“join … on …” 关键字。

级联join分为:

  1. join
  2. inner join
  3. left join
  4. right join
  5. full join

四种join查询的区别:

  1. JOIN: 如果表中有至少一个匹配,则返回行;
  2. INNER JOIN:在表中存在至少一个匹配时,返回行。
  3. LEFT JOIN: 即使右表中没有匹配,也从左表返回所有的行 ;
  4. RIGHT JOIN: 即使左表中没有匹配,也从右表返回所有的行;
  5. FULL JOIN: 只要其中一个表中存在匹配,就返回行;

数据库表信息

MySQL涉及4张表的级联查询_第1张图片MySQL涉及4张表的级联查询_第2张图片
MySQL涉及4张表的级联查询_第3张图片
MySQL涉及4张表的级联查询_第4张图片

查询目标

基于用户账号信息(userAccount字段), 选出当前状态(state = 1)下的涉及四张表的:paramName,labName,equipmentName,startTime,endTime。

    <select id="listOrders" resultType="com.alibaba.fastjson.JSONObject">
        select c.paramName, l.labName, e.equipmentName, o.startTime, o.endTime
        from corelist c

        inner join orderinfo o on c.coreId = o.coreId and c.userAccount = #{userAccount}

        inner join equipment e on e.eId = o.eId

        inner join lab l on l.labId = e.labId

        where o.state = 1;

    </select>

心得:

”join … on …“语句做级联查询,表与表之间只需要一次join即可。

你可能感兴趣的:(SQL,SQL)