MyBatis子查询+分组
查询需求:
如图,传入一个uid,根据该uid返回与该uid同组的全部uid列表。
查询思路:
根据uid找到该uid对应的gname,对gname进行归并,得到唯一的gname,根据gname,返回符合条件的全部uid,并根据uid进行归并。
接口编写
// 根据用户id查询该用户对应组的全部用户id
List<Integer> getGroupUidByUid(Integer uid);
Mapper编写:
<!-- 根据用户id查询该用户对应组的全部用户id-->
<select id="getGroupUidByUid" resultType="integer" parameterType="integer">
select uid from user_perms where gname=(select gname from user_perms where uid=#{uid} group by gname) group by uid;
</select>
** group by概述:**
简单来说:将数据库的数据用’by’后面接的规则进行分组,即将一个大数据库分成一个个相同类型数据在一起的小区域。
group by的语法:
SELECT column_name, function(column_name) //此处的function()函数是指SQL中的一些聚合函数,例如:MAX(),MIN(),SUM(),AVG(),COUNT()等等
FROM table_name
WHERE column_name operator value //where条件语句
GROUP BY column_name; //以某一列分组