Mybatissql模糊查询(先排序后去重)和时间范围查询
模糊查询
模糊查询本⾝⽤like关键字即可:
SELECT DISTINCT field_name
FROM table_name
WHERE field_name LIKE"%"#{fieldName,jdbcType=VARCHAR}"%"
这⾥要注意"%"的使⽤,如果不加的话,mybatis会解析错误mysql语句的执行顺序
另外,jdbcType=BIGINT的模糊查询存在问题
⼀般模糊查询都需要去重,会⽤到distinct关键字,但我们的需求⼜希望能输出按某个字段排序的前⼏个,⽐如:按时间倒序的前五个,这个时候sql可能如下:
select distinct user_id
from table_name
where user_id like"%"#{userId,jdbcType=VARCHAR}"%" and deleted = 0
order by ctime desc
limit5
这样写了之后会发现查询的结果不是我们想要的(不是按时间倒序的),因为这个sql语句的执⾏顺序
是,from—where—select—distinct—order by—limit,这就导致我们先去重再排序,是存在问题的,应该先排序再去重,这需要使
⽤group by去重,⽽⾮distinct:
select user_id
from table_name
where user_id like"%"#{userId,jdbcType=VARCHAR}"%" and deleted = 0
group by user_id
order by max(ctime)desc
自助快速建站
limit5
小程序源码怎么扒下来这样语句的执⾏顺序是from—where—group by—select—order by—limit
关于使⽤distinct去重和group by去重,可以参考
时间范围查询
startTime和endTime例⼦:2020-07-15
<if test="startTime != null and startTime != ''">
<![CDATA[and DATE_FORMAT(ctime,'%Y-%m-%d')>=  DATE_FORMAT(#{startTime}, '%Y-%m-%d')  ]]>
</if>
css代码margin
<if test="endTime != null and endTime != ''">
return是什么键<![CDATA[and DATE_FORMAT(ctime,'%Y-%m-%d')<=  DATE_FORMAT(#{endTime}, '%Y-%m-%d')  ]]>
css实现</if>

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。