
数据库
shenzhou_yh
个人博客:www.shenzhouyh.top
展开
-
SQL中的in、not in语句遇到null时的坑点
背景介绍前两天做问题排查的时候,写了一条sql,但是并没有如期地查到数据(确实是有数据的),SQL如下:SELECT tar.* FROM tb_account_relation tar WHERE tar.customer_id NOT IN ( SELECT customer_id FROM TB_SMS_SEND_DETAIL WHERE TYPE = '2' )...原创 2019-12-24 20:41:53 · 19571 阅读 · 5 评论 -
MYSQL随机读取一条数据
项目上有个需求,需要在客户表中随机取一条数据,虽然不是我的活,但是也思考了一下,本来觉得挺简单的,大抵是使用rand函数之类的就可以搞定,但是查了查资料,还真是别有洞天。看了几篇博客,下面介绍几种方式:方式一:select * from users order by rand() LIMIT 1好吧,这是第一种方式,也是最低效的方式,完全不考虑sql的性能,运行时间长,而且mys...原创 2019-05-25 18:32:18 · 9756 阅读 · 6 评论 -
记一次sql优化经历(优化in语句)
业务背景:根据客户群组查询标签,群组和标签的对应关系在tb_biz_type_tags中根据标签查询客户的手机号和机构标识(tb_customer_tags)根据手机号和机构标识,筛选出符合要求的客户信息(tb_account )已知:客户群组ID目标:群组中对应的客户信息原始sql:select a.* from tb_account awhere a.mobile in(...原创 2019-06-03 16:33:34 · 31598 阅读 · 4 评论 -
mybatis返回map类型数据空值字段不显示
业务需求背景为另一个系统提供接口查询数据,当数据为空时,该字段就直接不显示了,不符合对方的参数要求,现需要将所有字段进行展示。解决方法一对具体字段进行判断,为空则给默认值显示(CASE WHEN a.end_time is null then '' ELSE a.end_time END) as "endDate"也可以使用ifnull函数进行判断IFNULL(a.end_time,...原创 2019-06-24 12:16:32 · 1906 阅读 · 0 评论 -
Mybatis执行插入语句,未使用定义的默认值
背景系统中的某个实体表字段值为null时,其实表示的是无限大,但是当对其进行数量过滤时,又被过滤掉了,所以想给字段一个很大的默认值来解决这个问题。解决方法第一步:将所有的null值更新赋值为默认值,执行一条sql即可update tb_discount set discount_count = 100000 where discount_count is null第二步:设置指定...原创 2019-07-15 11:27:56 · 3361 阅读 · 0 评论 -
主键索引、唯一索引、复合主键辨析
主键和复合主键一个表中可以存在一个主键或者多个主键,都是起到唯一约束的作用;查了相关资料,还了解到,复合主键和联合主键的区别,只是看是来源于单表(复合主键),还是来源于多表(联合主键);在我看来其实都一样,只是概念稍微有点区分罢了,过于纠结没意义。主键索引和唯一索引相同点:都起到了约束数据记录唯一性的作用不同点:主键是一种约束,而唯一索引是索引,他们本质不一样主键创建之后一定包含着...原创 2019-08-09 12:03:42 · 1247 阅读 · 2 评论 -
springboot启动报错——jdbcUrl is required with driverClassName
背景介绍目前在做springboot配置双数据源的demo,在启动过程中就报了这个错误,目前配置如下:## test1 databasespring.datasource.test1.url=jdbc:mysql://localhost:3306/aipc-sit?useUnicode=true&characterEncoding=UTF-8&serverTimezone=U...原创 2019-09-10 10:19:25 · 1571 阅读 · 0 评论 -
Mybatis查询报错——com.mysql.jdbc.Connection.isValid(I)Z
背景在搭建springboot项目过程中,完成了项目启动,但是执行数据库操作就会报如下错误:com.mysql.jdbc.Connection.isValid(I)Z原因mysql的jar包版本过低。只需将mysql 的jar包更新一下就行。在更换的过程中还发现一个错误:Unknown system variable ‘tx_read_only’,原因是jdbc驱动5.*的版本不支...原创 2019-09-10 18:30:56 · 711 阅读 · 0 评论