mysql function
1. 关联查询,关联部分结果,避免重复
a left join b on a.id = b.aid a与b为一对多关系,查询出来的结果必然是a中数据重复,不同的地方在于查询出的b属性.
查询结果不让a重复,一对多,多的部分用集合表示
<resultMap id="Map1" type="com.young.Model"> <id column="id" jdbcType="BIGINT" property="id" /> ...... <collection property="treatmentMethodList" column="id" ofType="com.young.Treatment"> <result column="name" jdbcType="VARCHAR" property="name" /> </collection>
column 代表数据库字段,property代表对象中的属性,两者之间为映射关系.collection中的result为查询出的关联部分的属性,一对多,多合并为集合,一还是一,结果中一不会应为一对多而出现重复.
select mmc.id ,mmc...,mtt.name from mml_card mmc left join mt_treatment mtt on mmc.id = mtt.medical_card_id
2. 按类型分组查询某个条件的数量
select tumour_kind_name tumourKindName,COUNT(DISTINCT patient_id) shouldFollow from mss_medical_card mmc WHERE YEAR(DATE_ADD(mmc.confirmed_date,INTERVAL mmc.cycle day)) = YEAR('2017-06-01 20:14:12') and is_death = 0 group by tumourKindName;