- SQL code
SELECT origin FROM game_user WHERE plat_name='gamedp' AND game_name='dc2' AND area_name='一服'UNIONSELECT origin FROM game_user WHERE plat_name='gamedp' AND game_name='dc2' AND area_name='二服'UNIONSELECT origin FROM game_user WHERE plat_name='gamedp' AND game_name='dc2' AND area_name='s1'
java里有个数组a[]={“一服”,“二服”,“s1”}
ibatis里的配置
- XML code
<select id="queryOrigin" parameterType="java.lang.String" resultType="com.aiyounet.gas.service.bean.GameUser"> <foreach collection="array" item="areaName" open="(" separator="," close=")"> SELECT DISTINCT origin AS origin,id AS id FROM game_user WHERE plat_name=#{platName} AND game_name=#{gameName} AND area_name=#{areaName} <if test=" array.length >1 "> UNION </if> </foreach></select>这样写可以不?
------解决方案--------------------------------------------------------
同一个表里,用area_name in ('一服','二服','s1')就可以了
不同表才有union
------解决方案--------------------------------------------------------
<select id="queryOrigin" parameterType="java.lang.String" resultType="com.aiyounet.gas.service.bean.GameUser">
SELECT DISTINCT origin AS origin,id AS id
FROM game_user
WHERE plat_name=#{platName}
AND game_name=#{gameName}
<if test="areaName!=null ">
AND
area_name in
<foreach collection="array" item="areaName" open="(" separator="," close=")">
</foreach>
</if>
</select>