select * from job where id in(10,11,1,3) order by FIND_IN_SET(id,'10,11,1,3') asc
FIND_IN_SET是绝对匹配类型的。例如id为1,那么返回2。直接匹配到1上。而不会匹配到11上
在mybatis的xml中,实现方式
<bind>标签中的value是直接读取的参数的 。
<bind name="ids" value="a"/> 这样并不是代表值是a,而是读取a这个参数。
<bind name="ids" value=""/>不能直接默认这样写。而是<bind name="ids" value="''"/>这样写,才可以。默认为空字符
<select id="getOriginalMaterialOccupiedQuantity" parameterType="list" resultType="bigDecimal">
SELECT
ActualDemand - OccupiedQuantity AS OccupiedQuantity
FROM
demandplan
WHERE
ObjectID IN
<bind name="ids" value="''"/>
<foreach item="item" index="index" collection="list" open="(" separator="," close=")">
#{item}
<bind name="ids" value="ids+',' + item" />
</foreach>
ORDER BY FIND_IN_SET(ObjectID,#{ids}) ASC
</select>
网友评论