现在有两张表
一张用户表us_user(id : 用户ID、group_id : 分组ID、del_flag : 删除标记(0正常、1删除))
一张分组表us_group(id : 分组ID 、name : 分组名称、del_flag : 删除标记(0正常、1删除))
如果del_flag为1则不能将数据显示,相当于不存在的数据
要统计选择分组的人数,如果没有人选择也需要显示分组且人数为0
SELECT g.id,g.name,t.vipNum FROM us_group g
LEFT JOIN (select group_id, count( * ) AS vipNum
FROM us_user u
WHERE u.del_flag=0
GROUP BY group_id) t ON g.id=t.group_id WHERE del_flag=0
<select id="selectDetailByExample" parameterType="map" resultMap="BaseResultMap"> SELECT g.id,g.name,t.vipNum FROM us_group g <if test="distinct"> distinct </if> LEFT JOIN (SELECT group_id, count( * ) AS vipNum FROM us_user WHERE del_flag=0 GROUP BY group_id) t ON g.id=t.group_id <where> <if test="name != null"> AND name LIKE concat('%',#{name},'%')) </if> AND del_flag=0 </where> </select>