mysql查询,优化
21-夜一
早上搬砖,晚上砌梦想
展开
-
group_concat
需求:想通过type区分,然后需要type=1为 0123,type=2为012,type=3为01。原创 2023-03-10 10:55:42 · 201 阅读 · 1 评论 -
取重复数据中更新时间最新的数据
如下表,有条号码重复数据,但是更新时间不同,表中还有其他字段需要用到用普通查询不行(SELECT t.phone_number,MAX(t.update_time) update_time,id FROM cts_monitor_manager t GROUP BY phone_number)因为group by 中只可以查到grou by后面的字段phone_number,其他字段(id)查不到的,会报错所以需要自联查询SELECT t.phone_number,t.update_time原创 2021-07-27 16:22:46 · 1270 阅读 · 0 评论 -
list中根据某个字段去除重复值
ArrayList<ENTITY> newList = list.stream().collect (Collectors.collectingAndThen(Collectors.toCollection(() -> new TreeSet<>( Comparator.comparing(ENTITY::getId))), ArrayList::new));原创 2020-10-28 19:59:54 · 1968 阅读 · 0 评论 -
oracle数据处理中使用foreach, dual,union all组合成临时表
概念:在Oracle数据库内有一种特殊的表Dual。Dual表是Oracle中的一个实际存在的表,任何用户均可读取专,常用在没有目标表的属Select中。Dual表由Oracle连同数据字典一同创建,所有的用户都可以用名称DUAL访问该表。这个表里只有一列DUMMY,该列定义为VARCHAR2(1)类型,有一行值X。从DUAL表选择数据常被用来通过SELECT语句计算常数表达式,由于DUAL只有一行数据,所以常数只返回一次。Dual简单的说就是一个空表,Oracle提供的最小的工作表,只有一行一列原创 2020-10-28 19:53:41 · 2173 阅读 · 0 评论 -
oracle merge into 的使用(通过集合list批量操作数据库)
场景:1.oracle里面存放着7000W条数据2.当有大批量数据(7000条)遍历的时候,每次都循环查询,根据某条数据去7000W条数据中匹配,判断更新或者修改,效率会极其低下3.而且大批量数据每次都查询一次数据库就是(7000X7000W)的可怕数量思路:性能优化,有一个思路就是尽量减少sql的查询 因为他这里只有新增,修改的的逻辑,所有我们可以采取merge into的方案(merge into 是对比两张表,做saveOrUpdate操作),我们这里在mapper.xml里面采用fo原创 2020-10-28 19:37:56 · 3144 阅读 · 3 评论 -
mysql查询重复数据
表数据1 查询people_no重复的记录select * from people where people_no in (select people_no from people group by people_no having count(people_no) > 1);2 查询people_no重复的记录 ,排除最小id,如果删除改为delete fromselect * from peoplewhere people_no in (select people_no f转载 2020-10-19 09:10:26 · 237 阅读 · 0 评论 -
MySql排序查询(将null放在最后)
以下三种方法,可以将空值排序放到最后面1.SELECT * FROM t_user ORDER BY -STATUS DESC2.SELECT * FROM t_user ORDER BY ISNULL(STATUS), STATUS ASC3.SELECT * FROM t_user ORDER BY STATUS IS NULL, STATUS ASC原创 2020-07-28 11:34:39 · 2288 阅读 · 3 评论