left join + count(xxx)

SELECT a.*, B.id, B.business_id, COUNT(d.id) FROM c_dosemonitor a
LEFT JOIN tp_project b ON b.business_id = a.ID
LEFT JOIN c_dosemonitor_patch c ON c.dosemonitor_id = a.id AND c.is_valid = 1 -- 在连接时, 左边的一定会查出来
LEFT JOIN c_dosemonitor_data d ON d.patch_id = c.id AND d.is_valid = 1
WHERE a.is_valid = 1 AND b.is_valid = 1  -- 表示在连接完的结果中筛选, 会将查询结果中的一整条删除掉, 包括左边的tp_project
AND b.type = 1
GROUP BY a.id

注: 连接这种方式, resultMap一定要是BaseResult, 自定义的变量会根据默认变量名字匹配

换成自定义的resultMap, 自定义的变量不会调用变量的sert方法设置值

猜你喜欢

转载自blog.csdn.net/qq_34091758/article/details/84313817