MySQL记录
写功能期间遇到问题解决记录
修改某个字段文本中的部分文本
UPDATE 表名
SET author = REPLACE (
author,
'范·德拉',
'你好啊,范·德拉'
)
查询按,隔开的文本匹配
find_in_set
ancestors的字段数据为 100,101,1,120 格式
#{deptId}为 100
select * from 表名 where find_in_set(#{deptId}, ancestors);
使用可查询出相关数据
sql行转到一个字段里用某个字符隔开
将查询到的相关数据都查询到一个字段并用特定符号隔开
SELECT
group_concat(
DISTINCT field SEPARATOR ';'
) AS fieldss,
group_concat(
DISTINCT data_value SEPARATOR ';'
) AS dataValue
FROM
表名
where
tb_name = "1"
GROUP BY
data_id
linux备份mysql数据库到文件夹
手动备份
mysqldump -h localhost -uroot -p123456 database > dump.sql
mysqldump -h127.0.0.1 -P3306 -uroot -p123456 -x 表名>/data/mysqlBackup/数据库名_${data}.sql
mysqldump -h 127.0.0.1 -uroot -pWelcome_1 xj>/usr/local/software/xj_$(date +%Y%m%d%H%M).sql
定时任务备份
新建 sh 文件
#!/bin/bash
mysqldump -h 127.0.0.1 -uroot -pWelcome_1 xj>/usr/local/software/xj_$(date +%Y%m%d%H%M).sql
chmod +x databackup_month.sh
设置定时任务
vim /etc/crontab
mysql字段文本替换
REPLACE (DAY, '-', '') AS '替换'
SELECT REPLACE (day_time, '-', '') FROM `表名`;
行转列
SELECT
t1. MONTH,
t1.dept_data AS '2020年数据',
t2.dept_data AS '2021年数据',
t3.dept_data AS '2022年数据',
t4.dept_data AS '2023年数据'
FROM
dept t1,
dept t2,
dept t3,
dept t4
WHERE
t1. YEAR = '2020'
AND t2. YEAR = '2021'
AND t1. MONTH = t2. MONTH
AND t3. YEAR = '2022'
AND t3. MONTH = t1. MONTH
AND t4. YEAR = '2023'
AND t4. MONTH = t1. MONTH
mysql字段字符串截取
day_time 值为 2023-05-10
SELECT RIGHT(day_time,5) FROM `表名`; 结果 05-10
SELECT LEFT(day_time,5) FROM `表名`; 结果 2023-
SELECT SUBSTRING(day_time,2,5) FROM `表名`; 结果 023-0
同时编写两个sql查询数据
或者 union
查询同一个表里面不同年份数据,数据都为写死的
SELECT DISTINCT
'2020' AS '年',
CAST(10000 AS DECIMAL(10, 2)) AS '数量'
FROM
表名
UNION
SELECT DISTINCT
'2021' AS '年',
CAST(10000 AS DECIMAL(10, 2)) AS '数量'
FROM
表名
UNION
SELECT DISTINCT
'2022' AS '年',
CAST(10000 AS DECIMAL(10, 2)) AS '数量'
FROM
表名
查询字段最大值
max 可作为条件编译,以时间为例
where n1.years = (
SELECT
max(years)
FROM
表名 n2
)
MySQL日期计算
DATE_SUB((SELECT max(字段) from 表名), INTERVAL 7 DAY) 7天前
YEAR ( DATE_SUB( NOW( ), INTERVAL 1 YEAR ) ) 一年前
MONTH (NOW()) 当前月份
拼接字符串
将查询出字段前加对应字符串
CONCAT(gas_yuan , '1#')
MySQL if else 赋值
CASE
WHEN 判断条件 THEN 值
WHEN 判断条件 THEN 值
WHEN 判断条件THEN 值
ELSE 值
END AS 临时字段名称
来判断一个字段是否为NULL并替换
IFNULL
SELECT IFNULL(update_time,0) as timee FROM 表名; 将查询出数据为null的替换为0
SET age=IFNULL(age,0); 表中age字段为空的记录赋值为0