mp实现一个自连接查询

发布时间 2023-12-10 18:03:03作者: 天启A

起因是我设置了一个考核表结构,其中包含指标值,指标当前值,是主副指标等列。

后面我要进行考核的验收的时候,我发现验收要取得的是主当前指标值/主指标值以及副指标当前值/副指标值。如果想要让这两条数据一次都被查到,那么就需要进行自连接查询(查询同一个表两次,但是有些需要的输出内容要在一行数据中)

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.example.mapper.IndiMapper">
    <resultMap id="mainIndi" type="com.example.entity.Indi">
        <result property="lastMainIndi" column="a.indi_true/a.indi"/>
        <result property="lastSubIndi" column="b.indi_true/b.indi"/>
        <result property="name" column="name"/>
        <result property="time" column="time"/>
        <result property="id" column="id"/>
    </resultMap>
    <select id="selectIndiShow" resultMap="mainIndi">
        SELECT a.id,a.name,a.time,a.indi_true/a.indi,b.indi_true/b.indi
        FROM indiinfor a ,indiinfor b
        WHERE a.mainOrsub=1 AND  b.mainOrsub=0
    </select>
</mapper>

这里很有趣的一点是,我一开始把column写成a.name,a.time,a.id,居然查不出数据。后来我在navicat上查询发现,查出来的结果有些就是不带表名的