SQL中Left Join 与Right Join 与 Inner Join 与 Full Join的区别

首先在 SQLyog企业版 MySQL GUI 中测试一下SQL语句的执行。

EMP表:SQL中Left Join 与Right Join 与 Inner Join 与 Full Join的区别_第1张图片

SAL表:SQL中Left Join 与Right Join 与 Inner Join 与 Full Join的区别_第2张图片

左连接
select * from EMP e left join SAL s on e.name=s.name;

这里写图片描述
左连接,表EMP是主表,因此查询结果是显示EMP(主表)的全部信息和SAL(附表)与EMP相关的信息。

右连接
select * from EMP e right join SAL s on e.name=s.name;
这里写图片描述
右连接,表SAL是主表,因此查询结果显示SALT(主表)的全部信息和EMP(附表)与SAL想关的信息。

内连接
select * from EMP e inner join SAL s on e.name=s.name;
这里写图片描述
内连接,显示的是连个表相关的信息。

全连接
select * from EMP e full join SAL s on e.name=s.name;

全连接,显示两个表所有的信息。

nativeSql.tld
需要复杂的查询时使用 sql,普通简单的查询使用hql
<nativeSql:sqlQueryForList id="wares" sql="SELECT w.f_id,w.f_name,SUM(wd.f_quantity) as s FROM t_warehouseiodetail wd LEFT JOIN t_warehouse w ON w.f_id = wd.f_warehouse_id WHERE f_product_id = ${product.id } GROUP BY w.f_id,w.f_name "/>
<!--<hql:queryForList hql="select warehouse,sum(quantity) as s from WarehouseIODetail where product.id = ${product.id } group by warehouse " id="wares" />--> 

<table cellspacing="0" cellpadding="2" border="0" id="searchResultTable" class="table table-striped table-bordered table-hover">
        <thead>
    <tr>
        <th>仓库</th>
        <th>数量</th>
    </tr>
</thead>
<tbody>
    <c:forEach items="${wares }" var="w">
    <tr>
        <td>${w.f_name }</td>
        <td>${w.s }</td>

    </tr>   
    </c:forEach>
</tbody>
</table>

你可能感兴趣的:(sql,mysql)