#查詢表的索引 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