业务场景:人员某一关联表中 有多条信息,只查询最新的一条进行展示
SELECT
*
FROM
(
SELECT
alu.alumniuser_id,
alu.`name`,
alu.gender,
ma.major_name AS majorName,
dept.dept_name AS deptName,
edu.leave_year AS leaveYear,
exc.status AS exchangeNewsStatus
FROM
alumniuser alu
LEFT JOIN exchange_card exc ON alu.alumniuser_id = exc.accept_id
LEFT JOIN educationinfo edu ON alu.alumniuser_id = edu.alumniuser_id
LEFT JOIN major ma ON ma.major_id = edu.major_id
LEFT JOIN department dept ON edu.dept_id = dept.dept_id
<where>
exc.applicant_id = #{userId}
<if test="keyWords != null and keyWords !=''">
<bind name="keyWords" value="'%' + keyWords + '%'"/>
and CONCAT(alu.`name`,alu.alumniuser_id,dept.dept_name,ma.major_name) like #{keyWords}
</if>
</where>
having 1 //筛选1条
ORDER BY
edu.leave_year DESC //按照时间降序
) AS t
GROUP BY
t.`name`
order by t.exchangeNewsStatus DESC
</select>