首页 > 数据库 >mysql花式操作数据小技巧总结

mysql花式操作数据小技巧总结

时间:2023-12-13 12:31:40浏览次数:28  
标签:count 技巧 list agreement mysql id 花式


mysql花式操作数据小结

本文是一片关于一些mysql小技巧的总结。主要内容包括: 字段中包含多值、基于字段中某个值查询、基于身份证设置性别、身份证生成出生日期、增加表字段、一次搞定多个查询、关联删除、通过关系表一对多查询合并到一条记录、替代like


1.字段中包含多值


字段为crowd
其值:
1
1,3
2,3,4
3
3,4
我们把所有3删除 然后给他保持原先对队形得到:
1
1
2,4
null
4
操作:

UPDATE sd_o_agreement
SET crowd = trim(
	BOTH ','
	FROM
		REPLACE (
			concat(',', crowd, ','),
			',3,',
			','
		)
)
WHERE
	FIND_IN_SET(3, crowd)


2.基于字段中某个值查询


crowd 1,3,4 字样存储
我们查询所有crowd包含3的记录

SELECT
	*
FROM
	sd_o_agreement
WHERE
	FIND_IN_SET(3, crowd)


3.基于身份证设置性别


身份证字段 idcode 性别字段 sex 1 男 2女
当数据出现0 空 不是 1 也不是2 我们根据身份证修复一下

性别非1 2 根据身份证生成
 
UPDATE sd_o_agreement
SET sex = CASE
IF (
	length(pidcode) = 18,
	cast(
		substring(pidcode, 17, 1) AS UNSIGNED
	) % 2,

IF (
	length(pidcode) = 15,
	cast(
		substring(pidcode, 15, 1) AS UNSIGNED
	) % 2,
	3
)
)
WHEN 1 THEN
	1
WHEN 0 THEN
	2
ELSE
	0
END
WHERE
	sex NOT IN (1, 2)


4.身份证生成出生日期


身份证有了 但是生日字段却空缺,我们基于身份证做出出生日期

UPDATE sd_o_agreement
SET birth = cast(
	substring(pidcode, 7, 8) AS date
)
WHERE
	ISNULL(birth)


5.增加表字段


增加了开始时间 ,结束时间 都是时间戳类型。
开始时间就用添加时间戳,结束时间戳用1年以后

UPDATE sd_o_agreement
SET starttime = created_at;

UPDATE sd_o_agreement
SET endtime = UNIX_TIMESTAMP(
	DATE_ADD(
		from_unixtime(
			created_at,
			'%Y-%m-%d %H:%i:%s'
		),
		INTERVAL 1 YEAR
	)
)


6.一次搞定多个查询


一个统计方法 要查n多个统计数据,高效查询

$count_sql[]='SELECT count(*) as count from sd_o_agreement_serve'.$where .' and mark=0 ';
        $count_sql[]='SELECT count(*) as count from sd_o_agreement_serve'.$where.' and mark=1';
        $count_sql[]='SELECT count(*) as count from sd_o_agreement_serve'.$where.' and mark=2';
        $count_sql[]='SELECT count(*) as count from sd_o_agreement_serve'.$where.' and mark=3';
        $count_sql[]='SELECT count(*) as count from sd_o_agreement_serve'.$where.' and able=0';
        $count_sql[]='SELECT count(*) as count from sd_o_agreement_serve'.$where.' and able=1';

	$unionSql=implode(' union all ',$count_sql);//综合sql
	$unCount=Db::query($unionSql);


7.关联删除


info id 1 list_id 5
info id 2 list_id 5
info id 3 list_id 5
list-> info 一对多多重关联
下面sql是以info为主表为条件删除,
此法删除的是符合条件的info 以及被符合info关联起来的list
即:select count(*) from info where 条件
以及 join中:info.agreement_list_id = list.id符合条件的list
之和!
特意说明:及时list符合的where条件,但是其join对应的info没有贯通,此类list不会被删除!

DELETE info,
 list
FROM
	sd_o_agreement_list_info AS info
LEFT JOIN sd_o_agreement_list AS list ON info.agreement_list_id = list.id
WHERE
where条件


8.通过关系表一对多查询合并到一条记录


SELECT
	org.*,
	u.`name` AS create_user_name,
	rinfo.*
FROM
	sys_org org
LEFT JOIN sys_user u ON org.create_user_id = u.id
LEFT JOIN (
	SELECT
		r.org_id AS r_org_id,
		GROUP_CONCAT(c.`name`) AS channelNames,
		GROUP_CONCAT(c.id) AS channelIds
	FROM
		sys_org_channel_relation r
	LEFT JOIN sys_channel c ON r.channel_id = c.id
	GROUP BY
		r.org_id
) rinfo ON org.id = rinfo.r_org_id


9.替代like


SELECT c.*
 FROM sys_channel AS c
 WHERE (INSTR(c.name,'闻') > 0 OR INSTR(c.channel_code,'闻') > 0 ) 
 ORDER BY c.sort ASC
 LIMIT 10;

总结:

我认为, 经过上述讨论mysql花式操作数据小技巧总结因何而发生?要想清楚,mysql花式操作数据小技巧总结,到底是一种怎么样的存在。 乌申斯基曾经说过,学习是劳动,是充满思想的劳动。这不禁令我深思带着这些问题,我们来审视一下mysql花式操作数据小技巧总结。 我们一般认为,抓住了问题的关键,其他一切则会迎刃而解。 经过上述讨论一般来讲,我们都必须务必慎重的考虑考虑。 mysql花式操作数据小技巧总结的发生,到底需要如何做到,不mysql花式操作数据小技巧总结的发生,又会如何产生。 那么, 就我个人来说,mysql花式操作数据小技巧总结对我的意义,不能不说非常重大。 一般来讲,我们都必须务必慎重的考虑考虑。 mysql花式操作数据小技巧总结的发生,到底需要如何做到,不mysql花式操作数据小技巧总结的发生,又会如何产生。 既然如此。
  带着这些问题,我们来审视一下mysql花式操作数据小技巧总结。 本人也是经过了深思熟虑,在每个日日夜夜思考这个问题。 马云曾经说过,最大的挑战和突破在于用人,而用人最大的突破在于信任人。这不禁令我深思要想清楚,mysql花式操作数据小技巧总结,到底是一种怎么样的存在。 那么, 一般来说, 问题的关键究竟为何? 那么, 生活中,若mysql花式操作数据小技巧总结出现了,我们就不得不考虑它出现了的事实。 每个人都不得不面对这些问题。 在面对这种问题时, mysql花式操作数据小技巧总结,到底应该如何实现。 在这种困难的抉择下,本人思来想去,寝食难安。 而这些并不是完全重要,更加重要的问题是, 现在,解决mysql花式操作数据小技巧总结的问题,是非常非常重要的。 所以, 问题的关键究竟为何? 我们都知道,只要有意义,那么就必须慎重考虑。 总结的来说, 这种事实对本人来说意义重大,相信对这个世界也是有一定意义的。 我们都知道,只要有意义,那么就必须慎重考虑。 要想清楚,mysql花式操作数据小技巧总结,到底是一种怎么样的存在。 问题的关键究竟为何? 我们不得不面对一个非常尴尬的事实,那就是, mysql花式操作数据小技巧总结因何而发生?经过上述讨论冯学峰曾经说过,当一个人用工作去迎接光明,光明很快就会来照耀着他。这不禁令我深思带着这些问题,我们来审视一下mysql花式操作数据小技巧总结。 莎士比亚曾经说过,意志命运往往背道而驰,决心到最后会全部推倒。这不禁令我深思。


标签:count,技巧,list,agreement,mysql,id,花式
From: https://blog.51cto.com/phor/8800988

相关文章

  • MySQL 可以针对表级别设置数据库引擎吗?怎么设置?
    可以针对不同的表设置不同的引擎。在createtable语句中使用engine=引擎名(比如Memory)来设置此表的存储引擎。完整代码如下:createtablestudent(idintprimarykeyauto_increment,usernamevarchar(120),ageint)ENGINE=MemoryMySQL可以针对每个表进行独立的存储引擎......
  • MySQL 执行一条查询语句的内部执行过程?
    客户端先通过连接器连接到MySQL服务器。连接器权限验证通过之后,先查询是否有查询缓存,如果有缓存(之前执行过此语句)则直接返回缓存数据,如果没有缓存则进入分析器。分析器会对查询语句进行语法分析和词法分析,判断SQL语法是否正确,如果查询语法错误会直接返回给客户端错误信息,如果语......
  • MySQL 提示“不存在此列”是执行到哪个节点报出的?
    在MySQL中,当执行一条查询语句时,如果出现"不存在此列"的错误提示,通常是在查询解析阶段报出的。查询解析是MySQL执行查询语句的第一个阶段,它负责对查询语句进行语法解析和语义解析。在这个阶段,MySQL会检查查询语句中的表、列、函数等是否存在,并验证其正确性。如果查询语句中引用了不......
  • 理解Mysql索引原理及特性
    作为开发人员,碰到了执行时间较长的sql时,基本上大家都会说”加个索引吧”。但是索引是什么东西,索引有哪些特性,下面和大家简单讨论一下。1索引如何工作,是如何加快查询速度索引就好比书本的目录,提高数据库表数据访问速度的数据库对象。当我们的请求打过来之后,如果有目录,就会快速的......
  • windows安装mysql时卡write configuration file曲线救国 mysql 5.7.39 免安装(ZIP压缩
    现象描述现象描述:使用安装包安装时,卡:writeconfigurationfile解决办法解决办法:曲线救国mysql5.7.39免安装(ZIP压缩包)版本安装配置1.下载mysql官网:mysql官网,点击前往2.安装下载后解压到任意文件夹,如我所解压的路径为:D:\ProgramFiles\MySQL\mysql-5.7将解压......
  • [刷题技巧] 链表刷题技巧汇总
    链表的算法题中很常见的技巧:添加虚拟头结点,即dummy结点。当需要创造一条新链表的时候,可以使用虚拟头节点简化边界情况的处理。例如:LeetCode21.合并两个有序链表,让两条有序链表合并成一条新的有序链表,需要创造一条新的链表。例如,LeetCode86.分隔链表,把一条链表分解成两条链......
  • C# 从代码入门 Mysql 数据库事务
    目录生成数据库数据Mysql数据库事务基础数据库的并发一致性问题数据库事务的隔离级别BeginTransaction()和TransactionScope的区别BeginTransaction()可以不手动撤销TransactionScope总结DML是否可以使用事务顺序多操作嵌套事务事务范围封装DbContextTransactionScopeBeginT......
  • 【SpringBootWeb入门-11】MySQL-概述-安装配置
    1、入门前言之前的文章我们讲解了javaweb的springboot框架的入门学习,javaweb开发-数据库也是我们需要学习的核心之一,接下来我们进入MySQL的学习,本篇内容主要讲解MySQL的安装以及配置。2、MySQL下载MySQL官方给我们提供了两种不同的版本:商业版本和社区版本,具体区别如下图:我们......
  • mysql 企业表和员工表,一旦企业下面有员工就不允许删除企业。如何通过外键设置实现呢
    简述mysql企业表和员工表,一旦企业下面有员工就不允许删除企业。如何通过外键设置实现呢前情提示系统:一说部分截图、链接等因过期、更换域名、MD语法等可能不显示,可联系反馈(备注好博文地址),谢谢❤带有#号、删除线、不操作、不执行字样的为提示或者备份bash,实际不执行如果无法下......
  • mysql的ON DELETE CASCADE 和ON DELETE RESTRICT区别
    ONDELETECASCADE和ONDELETERESTRICT是MySQL中两种不同的外键约束级联操作。它们之间的主要区别在于当主表中的记录被删除时,子表中相关记录的处理方式。ONDELETECASCADE:当在主表中删除一条记录时,所有与之相关的子表中的匹配记录也会被自动删除。这通常用于强耦合的关系,......