sql
不粘人的小妖精
这个作者很懒,什么都没留下…
展开
-
mybatis xml中使用in的sql长度超过1000的解决办法
原来: 入参为List<String> WHERE name IS NOT NULL <if test="userids!=null and userids.size()>0" > AND DEVICE_ID in <foreach collection="userids" item="createby" open="(" separator="," close="...转载 2020-07-30 15:25:21 · 5240 阅读 · 0 评论 -
sql:对单个字段去重,distinct和group by性能分析
distinct简单来说就是用来去重的,而group by的设计目的则是用来聚合统计的,两者在能够实现的功能上有些相同之处,但是2者的性能差距很大对于一个84万数据量的表,count(distinct(XXX))的查询需要20s,而group by仅需1s,性能相差20倍原理分析: distinct方式就是两两对比,需要遍历整个表,大多数情况下都会导致对最终结果集进...原创 2020-01-08 16:23:55 · 6001 阅读 · 0 评论 -
PostgreSQL合并查询同一列的多条记录
昨天遇到一个sql问题,需要将一个表中的某一列的多行数据拼接成一行例如:表中有2列数据:列1 列2AAA 企业1AAA 企业2AAA 企业3BBB 企业4BBB 企业5我想把这个表变成如下格式:列1 列2AAA...原创 2019-02-21 15:18:10 · 9731 阅读 · 1 评论 -
mybatis动态sql排序无效问题
在使用MyBatis解析xml进行排序的时候,遇见排序无效的问题!#将传入的数据都当成一个字符串,会对自动传入的数据加一个双引号。如:order by #{user_id},如果传入的值是111,那么解析成sql时的值为order by “111”, 如果传入的值是id,则解析成的sql为order by “id”。$将传入的数据直接显示生成在sql中。如:order by ${user_...原创 2019-04-20 16:58:38 · 1304 阅读 · 0 评论 -
sql查询每天整点时间的数据
数据库表里有多个时间数据,只想取每天5分钟、10分钟、1小时、4小时整点的数据,其他时间点的不要,sql可以这样写:postgreSqllog_time的类型为timestamp5min整点:select log_time from XXX where mod(extract(minute from log_time)::int,5) = 010min整点:select log_t...原创 2019-05-14 17:28:09 · 18831 阅读 · 3 评论 -
left join 连表问题解析:on后多条件无效 & where与on的区别
在项目中用到多表联合查询,发现2个现象,今天解决这2个疑问:1、left join连接2张表,on后的条件第一个生效,用and连接的其他条件不生效;2、一旦加上where,则显示的结果等同于inner join;先写结论:过滤条件放在:where后面:是先连接然生成临时查询结果,然后再筛选on后面:先根据条件过滤筛选,再连 生成临时查询结果table1 left joi...原创 2019-05-22 15:48:05 · 11714 阅读 · 2 评论