MySQL 统计近 30 天和近 12 个月的每月记录数

大屏数据有一个折线图,需要近 30 天的和近 12 个月的每月记录数统计。一开始想的是数据先按照天或者月统计完数据之后,再通过排序解决:List<DistributionDTO> distributionDTOList = statisticService.selectCarDistribution(); distributionDTOList.sort(Comparator.comp

MySQL 5.7 根据关联表更新当前表

之前不知道还有可以这么操作的 SQL,都是先取出数据再遍历循环更新。百度了一下,大概的几种方式记录一下。mysql根据一个表的数据更新另一个表数据的SQL写法方法一:使用 JOIN 语句(后面测试执行报错 Syntax Error)update table2 set table2.column2 = table1.column1 join table1 on table2.id = table1.

Mysql 获取 JSON 字符串格式内的字段

项目中需要对出现计费异常的运营订单做还原处理,即将其原始数据更新到订单表。其中计费规则使用了 JSON 字符串格式进行存储,但在筛选计费异常的运营订单过程中,需要解析还原内部字段做计算。百度提供了两个版本,通用版:SELECT JSON_EXTRACT(profile, '$.name') AS user_name FROM users;MySQL 5.7+,你也可以使用更简洁的操作符 ->

MySQL 批量生成并插入数据

之前有过批量导入有规则的数据记录的情况,即设备信息批量导入。厂家会给出一个编码规则和范围,然后通过创建的函数过程(PROCEDURE)执行导入。这几天在研究 MySQL左联多个表做分组查询 时,需要批量生成一批数据,来检验查询的结果和效率。之前的一个批量导入过程结构大概像这样:CREATE DEFINER=`schema_name`@`%` PROCEDURE `procedure_name`(I

MySQL左联多个表做分组查询数据重复问题解决

经常会遇到 MySQL 左联很多个表的情况,大部分情况下,只要主表外键与每个左联表都是一对一或者多对一(hasOne)的关系,那么结果记录数就不会存在问题。但是当与左联表关系是一对多的情况下,结果会出现重复记录。这种情况除了是以左联表作为目标记录,一般都会做去重处理。通过聚合函数(比如:COUNT、SUM、AVG、MIN、MAX 等)结合 group by 分组查询可以实现去重目的。select

项目实时数据大屏展示导致数据库阻塞问题诊断

项目之前做过一个大屏数据展示的单页,需要展示实时的订单数、订单金额,还有设备、商铺方面的排行榜。因为前、后端开发对于 SQL 数据查询阻塞缺乏认知(也是因为懒),将单页中的所有数据都通过一个接口返回,前端每 10s 刷新一次数据。后来发现了数据查询的阻塞问题,后端使用了 redis 缓存查询结果 1 个小时。这本来是可以缓解一些数据阻塞问题,因为按照理想状态,只要第一次查询到了数据,后续 1 个小

mysql 插入中文报错:incorrect string value for column

分别检查数据库、表和字段的字符集编码及排序规则:前两者都为 utf8 或 utf8mb4(支持二进制存储,表情包存储)数据库字符集使用 utf8mb4表字符集使用 utf8mb4最后一个字段的字符集为 latin 之类的,但观察了以下,发现所有表的字段字符集都是这个,这意味着如果要让之后不再报这个错误,需要修改所有的字段的字符集。网上找了一个 修改所有字段字符集 sql :-- 查看某个数据库的表

myql 报错:subquery return more than 1 row

原因:在 select 查询中某字段使用了子查询获取信息,但因为子查询返回数据多余 1 行,导致无法获取数据解决:将子查询结果限制在 1 行limit 1 解决。

windows 下 mysql 8.0 修改用户密码

目标增加一个可以远程登录的账号,并设置一下密码和权限。步骤在不记得初始密码的时候,可以使用步骤一来启用一个跳过权限表认证的 mysqld 服务。启用一个跳过权限表认证的 mysqld 服务需要以管理员的身份运行命令行,先将系统中的 mysql 服务关闭: net stop mysql。但我使用的是 phpstudy 开启的 mysql 8.0 服务,这个指令返回了找不到服务,需要从面板里关闭。关闭