记录一下我自己常用的关联方法
1、内连接(INNER JOIN)
??????① 等值连接:
ON A.id = B.id
? ? ? ② 不等值连接:ON A.id > B.id
? ? ? ③ 自连接:SELECT * FROM A a1 INNER JOIN A a2 ON a1.id = a2.sid
??????注:多表中同时符合某种条件的数据记录的集合
2、外连接(LEFT JOIN(左外连接) 和 RIGHT JOIN(右外连接))
3、联合查询(UNION 和 UNION ALL)
????????SELECT (查询条件) ????????FROM 表名(主表) ????????INNER JOIN (关联表名) ????????ON (关联字段)???? 例:c.record_id=r.record_id ????????LEFT JOIN (关联表名) ????????ON (关联字段)
<where>
<trim prefixOverrides = "and"> //prefixOverrides 将前缀and的去掉
<if test="agentCode != null">
c.agent_code like concat('%',#{agentCode},'%') //agentCode 模糊查询
</if>
<if test="agentCodes !=null">
and c.agent_code in
<foreach collection="agentCodes" item="item" open="(" close=")" separator=",">
#{item}
</foreach>
</if>
<if test="number != null and number !=''">
AND number like concat('%',#{number},'%')
</if>
<if test="result != null and result !=''">
AND result = #{result}
</if>
<if test="startTime !=null and expirationTime != null">
and r.date between #{startTime} and #{expirationTime} //如果开始时间和结束时间都不为空,data在这个范围之内
</if>
<if test="startTime != null and expirationTime == null">
and r.date >= #{startTime}
</if>
<if test="startDate !=null and endDate != null">
and r.make_date between #{startDate} and #{endDate}
</if>
<if test="startDate !=null and endDate == null">
and r.make_date >= #{startDate}
</if>
</trim>
</where>
ORDER BY r.make_date DESC //通过make_date实现降序排列
|