inner join的使用
数据库表之间的级联查询使用“join … on …” 关键字。
级联join分为:
- join
- inner join
- left join
- right join
- full join
四种join查询的区别:
- JOIN: 如果表中有至少一个匹配,则返回行;
- INNER JOIN:在表中存在至少一个匹配时,返回行。
- LEFT JOIN: 即使右表中没有匹配,也从左表返回所有的行 ;
- RIGHT JOIN: 即使左表中没有匹配,也从右表返回所有的行;
- FULL JOIN: 只要其中一个表中存在匹配,就返回行;
数据库表信息
查询目标
基于用户账号信息(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即可。