MySql_231103

对INT类型日期时间进行格式化

语法:FROM_UNIXTIME(unix_timestamp,format)

unix_timestamp:Unix 时间标记的一个字符串
format:格式化,可不加

SELECT *,FROM_UNIXTIME(`l_ctime`,'%Y-%m-%d %H:%i:%S') FROM `user`

过滤某列重复项

SELECT DISTINCT sex,name FROM `user` WHERE `age` = 18;

WHERE条件可以用表名.字段

SELECT * FROM `cl_store` WHERE (`cl_store`.`s_mid` = 23907)

删除表的记录后使ID从1开始

truncate table 你的表名

关联表批量插入数据

查询的数据批量插入另一张表。

insert into <表名> (字段名,…) select 字段名【select 语句】
insert into 的字段名要与 select 的字段名一一对应

insert into u_gsv_ytm (l_year, l_reginCode, l_subregionCode, l_mid, l_keyid, l_isChenlie, l_skucode, l_ytmGSV, l_pnums)
select 
	substring(a.QuarterCode, 2, 4)	as l_year	
	, b.s_regionCode				as l_reginCode
	, b.s_subregionCode				as l_subregionCode
	, a.MID							as l_mid
	, a.KeyID						as l_keyid
	, b.s_isChenlie					as l_isChenlie
	, a.STDSKUCode					as l_skucode
	, a.sumgsv						as l_ytmGSV
	, a.QuarterCode					as l_pnums
from (
	SELECT MID,STDSKUCode,KeyID,QuarterCode,SUM(GSV) AS sumgsv
	FROM u_gsv_old 
	WHERE (MonthCode >= '2023_M01' AND MonthCode < '2023_M05') OR (MonthCode >= '2022_M01' AND MonthCode < '2022_M05')
	GROUP BY MID,STDSKUCode,QuarterCode
) a
left join data_store b on a.QuarterCode = b.s_pnums and a.MID = b.s_mid

substring(string, start, length)
从字符串的开始位置截取字符串。

string表示待截取的字符串;
start表示截取的起始位置,如果为负整数,则为从右往左数的起始位置;
length表示需要截取的字符串长度,如果不写,则默认截取开始之后的所有字符。

连表UPDATE更新数据

UPDATE <表名> left join <表名> on <表字段> =<另一个表字段> SET <字段名>=<字段值>,…

UPDATE u_gsv_ytm d
left join (
	SELECT b.s_regionCode,b.s_subregionCode,b.s_isChenlie,b.s_mid
	FROM (
		SELECT s_mid,SUBSTRING_INDEX(group_concat(s_pnums ORDER BY s_pnums DESC),',',1) s_pnums
		FROM data_store 
		WHERE s_pnums<='P202302' 
		GROUP BY s_mid 
	) a 
	left join data_store b on a.s_mid = b.s_mid and a.s_pnums = b.s_pnums
)c 
on d.l_mid = c.s_mid
SET d.l_reginCode=c.s_regionCode,d.l_subregionCode=c.s_subregionCode,d.l_isChenlie=c.s_isChenlie;

GROUP BY与GROUP_CONCAT使用

GROUP_CONCAT([DISTINCT] column1 [ORDER BY column2 ASC\DESC] [SEPARATOR seq])
将分组中column1字段对应的多个值按照column2升序或者降序进行连接。

DISTINCT表示column1不重复并按照column2升序或者降序拼接;
SEPARATOR seq表示column1按什么分隔符拼接,默认以,分隔。

GROUP BYORDER BY使用排序失效,可以用GROUP_CONCAT解决。

SELECT *
FROM (
	#SELECT s_mid,group_concat(s_pnums)
	#SELECT s_mid,group_concat(s_pnums ORDER BY s_pnums ASC)
	SELECT s_mid,SUBSTRING_INDEX(group_concat(s_pnums ORDER BY s_pnums DESC),',',1)	
	#SELECT s_mid,group_concat(DISTINCT s_mid ORDER BY s_pnums DESC)
	FROM data_store 
	WHERE s_pnums<='P202302' 
	GROUP BY s_mid 
) a
WHERE a.s_mid=2

SUBSTRING_INDEX(‘待截取的字符串’,‘以什么字符截取’,截取字符的位置) 截取函数

查看mysql数据库储存在本地哪个目录

show variables like 'datadir';

''""区别

别名用"",字段值为字符串用''。可以混用但是这样是规范的。

使用Navicat Premium 15导出csv文件数字变成科学计数法

SELECT id,sort_id,`name`,CONCAT( '\'',sku) AS sku,price FROM xl_lottery;
SELECT id "序号ID(唯一)",sort_id "排序ID(可重复)",`name` "奖项",CONCAT( sku,'\t') AS "奖品SKU",price "金币价值" FROM xl_lottery;
SELECT id,sort_id,`name`,CONCAT( '\t',sku) AS sku,price FROM xl_lottery;

导出结果,这三种方法导出csv文件不会变成科学计数法的。导出的时候文件名可以修改成需要的文件名,文件名是什么的里面子表名称也会是文件名。
不足之处:如果把导出的csv文件导入数据表中那个字段就会带上CONCAT拼接的字符串。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值