#查询表的索引 SHOW INDEX FROM 表名称 #删除表的索引 DROP INDEX STREET ON 表名称(字段);
#实时数据 where dateTime>=(NOW() - interval 24 hour) #七天的数据 WHERE dateTime >= date_sub(curdate(), interval 7 day) #当日的日期函数 where date = date_sub(curdate(), interval 2 day)
#
interval是减法的意思
时间的格式,传入开始时间和结束时间,只输入当前日期,规定好后面的时分秒
AND dateTime >= DATE_FORMAT(STR_TO_DATE((NOW() - interval 24 hour), '%Y-%m-%d'),'%Y-%m-%d 00:00:00') AND dateTime <= DATE_FORMAT(STR_TO_DATE((NOW() - interval 24 hour), '%Y-%m-%d'),'%Y-%m-%d 23:59:59')
AND dateTime BETWEEN DATE_FORMAT(STR_TO_DATE('2020-06-06', '%Y-%m-%d'),'%Y-%m-%d 00:00:00') AND DATE_FORMAT(STR_TO_DATE('2020-06-06', '%Y-%m-%d'),'%Y-%m-%d 23:59:59')
WHERE dateTime >= DATE_FORMAT(STR_TO_DATE(#{startTime, jdbcType=VARCHAR}, '%Y-%m-%d'),'%Y-%m-%d 00:00:00')
AND dateTime <= DATE_FORMAT(STR_TO_DATE(#{endTime, jdbcType=VARCHAR}, '%Y-%m-%d'),'%Y-%m-%d 23:59:59')
case when的用法
SELECT CASE WHEN 字段名 = '1' THEN '自住' WHEN HOUSE_TYPE = '2' THEN '租住' WHEN HOUSE_TYPE = '3' THEN '投亲靠友' WHEN HOUSE_TYPE = '4' THEN '酒店' WHEN HOUSE_TYPE = '5' THEN '民宿' WHEN HOUSE_TYPE = '6' THEN '宿舍' WHEN HOUSE_TYPE = '7' THEN '工棚' WHEN HOUSE_TYPE = '8' THEN '其他' END as `name`, count(1) `value` FROM t_dws_dt_yd_tianfu_healthy_communication WHERE STREET = '条件' GROUP BY name
另外一种写法
SELECT CASE WHEN HOUSE_TYPE = '1' THEN '自住' WHEN HOUSE_TYPE = '2' THEN '租住' WHEN HOUSE_TYPE = '3' THEN '投亲靠友' WHEN HOUSE_TYPE = '4' THEN '酒店' WHEN HOUSE_TYPE = '5' THEN '民宿' WHEN HOUSE_TYPE = '6' THEN '宿舍' WHEN HOUSE_TYPE = '7' THEN '工棚' else '其他' END as name, count(1) value FROM t_dws_dt_yd_tianfu_healthy_communication WHERE STREET = #{street} GROUP BY name ORDER BY value DESC
#利用case when+排序 解决置顶排名问题,返之置底
这是置顶显示,置底的话order by flag desc反序排列即可;
select (case when a.rank='3' then 0 else 1 end) flag,a.* from userlevel a order by flag asc;
#方法二,通过union
select * from userlevel where rank='3' union all select * from userlevel where rank<>'3';
#排名用法顺序排名,123456
SELECT id,`name`,total, (@i :=@i + 1) AS rank FROM t_dws_xzfy_xzysqk, (SELECT @i := 0) t WHERE date >= #{param1} AND date <= #{param2}
#排名的用法不占位排名,11123456
SELECT appear, CASE WHEN @sn = appear THEN @rank WHEN @sn := appear THEN @rank := @rank + 1 END rank FROM ( SELECT '100' appear UNION ALL SELECT '50' appear UNION ALL SELECT '60' appear UNION ALL SELECT '80' appear UNION ALL SELECT '80' appear ) M, ( SELECT @rank :=0, @sn :=0 ) t ORDER BY appear DESC
#排名的用法不占位排名,111456
SELECT appear, @sn := @sn + 1, @ir := CASE WHEN @rt = appear THEN @ir WHEN @rt := appear THEN @sn WHEN appear = 0 THEN @ir + 1 END rank FROM ( SELECT IFNULL((in_court / open_court), 0) appear FROM t_dws_xzfy_xzysqk WHERE date >= '2020-01-01' AND date <= '2020-12-31' ) M, ( SELECT @sn := 0 ,@rt := 0 ,@ir := 0 ) t ORDER BY appear DESC