![](https://img-blog.csdnimg.cn/20190927151053287.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
mySql
mysql中用到相关函数、优化等
吱吱喔喔
这个作者很懒,什么都没留下…
展开
-
浅谈mysql 的批量delete 和 使用in条件批量删除问题
需要注意的是,这个IN子句可能不会按预期工作,因为它可能会产生笛卡尔积的效果,即它会尝试匹配所有可能的(b, c)组合,而不仅仅是那些实际存在的组合。如果必须使用第二个方法(即单个DELETE语句使用IN子句),请确保你的IN子句正确地描述了要删除的记录集,并且已经为相关的列建立了合适的索引。如果可能的话,尽量减少事务的大小和持续时间,以减少锁定的资源数量。然而,这种方法的缺点是存在大量的网络往返(如果客户端和数据库服务器分开部署),以及可能的日志记录开销(取决于数据库的配置和隔离级别)。原创 2024-06-07 14:40:13 · 854 阅读 · 0 评论 -
mysql 拼接字段+根据特定值返回特定内容
1、这里,首选实现根据特定值返回特定内容,使用 case。2、然后使用Group_Concat函数。原创 2024-06-06 10:48:33 · 249 阅读 · 0 评论 -
for与foreach循环效率比较
然后在第二个循环中,我们直接使用预计算的值,避免了在每次迭代中重复执行昂贵的计算。如果你需要访问元素的索引,或者对迭代有特定的控制需求,使用。在实际开发中,除非在性能关键的代码中遇到性能瓶颈,并且已经通过性能分析工具确定了循环是瓶颈所在,否则通常不需要过分担心。循环的效率通常取决于多个因素,包括你正在迭代的集合类型、集合的大小、以及循环体内的操作。如果循环中的某些计算是重复的或可以预先计算的,考虑使用缓存来存储结果,避免重复计算。将不依赖于循环变量的计算移到循环外部,避免在每次迭代时重复执行相同的计算。原创 2024-04-28 11:09:06 · 547 阅读 · 0 评论 -
WHERE EXISTS 配置联表中的select 1 的用意
这样的查询通常用于关联查询,但它并不返回关联表的具体数据,只是检查关联是否存在。是一个子查询运算符,用于检查子查询是否返回至少一行结果。如果子查询返回至少一行,则。更高效,因为它不需要检索任何实际的数据行,只需要检查是否有匹配的行存在。是一个常量,它的作用仅仅是为了满足SQL语法的要求,因为。m where m.EntityId=t.Id用意。如果子查询没有返回任何行,则结果为。是一个常用的技巧,它实际上并不关心从。简单来说,这个查询返回所有在。如果存在这样的匹配,那么。这个子查询的目的是检查。原创 2024-04-28 11:40:21 · 314 阅读 · 0 评论 -
组合索引(复合索引或联合索引)最左原则
最左原则”的意思是,当你查询一个组合索引时,MySQL会使用索引的最左边的列来定位数据。如果查询条件只使用了组合索引中的部分列,并且这些列不是从最左边开始的,那么索引可能不会被使用,或者可能不会被完全利用,这取决于具体的查询条件和数据库优化器的决策。但是,当使用组合索引时,必须遵循所谓的“最左前缀”原则,这意味着查询条件必须使用索引的最左边的列,并且可以从左到右依次使用更多的列。总之,遵循“最左原则”意味着,当使用组合索引时,查询条件应该尽可能地从最左边的列开始,以便能够充分利用索引的优势。原创 2024-04-23 11:08:24 · 282 阅读 · 0 评论 -
mysql索引里得基数是啥
重复得值多了,基数就会小,比如,该字段只有两个不同得值,那基数就是2,如果是8个,基数就是8,如果存得有1000个 不同值,基数就是1000。索引里得基数是指索引中存放得不同值的数量。对于像某个字段,如果存有多个不同的值,那么基数就会大,反之,如果有很多重复的值,基数就会小。索引基数的高低对数据库性能有重要影响,高基数意味着索引的效率较高,低基数可能会导致性能问题,因为索引可能不够高效。其实就是你给某个字段建立了索引,基数大小就是你这个字段在数据库中存放得每一个值,原创 2024-04-23 10:12:04 · 394 阅读 · 0 评论 -
mysql中连接两个字符串常量
值的情况下返回空字符串或其他默认值,你可以使用。这将返回一个包含用户ID和完整姓名的信息字符串。如果你想要用特定的分隔符连接字符串,可以使用。这将使用逗号和空格作为分隔符连接。和连接它们中间加上一个空格的。函数将返回空字符串,从而确保。函数时,如果任何参数是。原创 2024-04-20 12:15:00 · 175 阅读 · 0 评论 -
分页查询时转Tolist时报错Unable to cast object of type ‘System.DBNull‘ to type ‘System.Decimal‘.
直到执行ToList时会经行映射转换到自定义的ef数据表模型类,此时由于自定义的一些值类型和时间类型的字段不为空,但是数据库里确实为空,才导致转换时图1的报错。原创 2024-01-26 09:34:18 · 480 阅读 · 0 评论 -
mysql二进制对应ef中实体表字段类型
mysql二进制对应ef中实体表字段类型原创 2023-12-29 13:35:46 · 556 阅读 · 0 评论 -
mysql更新某个字段=这个字段+字符串
当我们像c#中用+拼接执行sql语句时会出现以下错误UPDATE abpusers set UserName='qy'+UserName+'' where UserName='qy-wh'> Affected rows: 0> 时间: 0.001s原创 2023-12-13 16:01:23 · 177 阅读 · 0 评论 -
mysql 中查询字段内容长度以及是否是纯数字的函数
2、 查询纯数字,使用正则表达式。1、字段内容长度查询。原创 2023-12-13 15:50:20 · 1433 阅读 · 0 评论 -
MySQL 报错 You can‘t specify target table for update in FROM clause解决办法
且在其他类型的数据库中并不会出现,解决方法也简单,就是再封装一次查询,如下。但是当执行子查询删除命令时,报如下错误。结果如下,已成功影响21行。原创 2023-12-13 10:55:33 · 735 阅读 · 0 评论 -
dapper+mysql查询报Error parsing column 0 (Id=<null>)
查看返回的报错信息是id字段那报错了,网上说是代码里定义的模型跟数据库表里的类型不一致导致的,我看了下不是这个原因,最后查看查询出来的数据如下:id是1和2两列,那就不对了,代码里定义的是guid类型的,查询出来应该是36位的字符串才能正常转换成guid,所以报错了。分页查询代码如下,执行到这里报错的 var list = await reader.ReadAsync();之前的分页接口都是正常的,突然就报错了Error parsing column 0 (Id=)原创 2023-11-30 11:28:16 · 646 阅读 · 0 评论 -
Dapper中使用字符串作为动态参数查询时,结果不是预期的问题
1、如下图,c.industryId作为string类型当作参数传递,解析时会加单引号,即:”c.industryId“,当成实际的值所以会查询不出数据。的写法可读性高,代码简洁。生成的查询语句就会变成。原创 2023-10-23 16:49:39 · 196 阅读 · 0 评论 -
Abp中集成Dapper中使用简化官方写法后还是报The transaction associated with this command is not the connection‘s active
最新在使用中使用上面的方法,还是会报错,首选导致错误原因是因为,下面的IndustryStatistictDapperRepository类没有加入依赖注入ITransientDependency,调用接口时刚开始会报初始化错误,await connect.QueryAsync(sqlStr, dbTransaction) --简化了上面的方法,不加transaction:则还会报错,的话,会被当成object param查询参数。上下文事物,所以应该是不指定。出现这种问题应该是由于不加。原创 2023-10-19 16:41:51 · 171 阅读 · 0 评论 -
Abp中集成Dapper 有时候遇到The transaction associated with this command is not the connection‘s active
Abp中集成Dapper 有时候遇到The transaction associated with this command is not the connection's active大概翻译成中文说是:与此命令关联的事务不是连接的活动事务(在水之云的框架执行后台作业里也都会出现这种情况)原创 2023-10-19 16:36:32 · 401 阅读 · 0 评论 -
mysql分组排序并取每组的前1条记录
最后根据模块类型和供应商用户id分组查询(GROUP BY ss.ModuleType,ss.CreatorId)--这个理在使用GROUP BY是为了过滤一些重复的内容,比如:上面语句去掉GROUP BY ss.ModuleType,ss.CreatorId。row_num原创 2023-10-16 11:44:53 · 1324 阅读 · 0 评论 -
mysql中的几种排名函数
这ROW_NUMBER()是一个窗口函数或分析函数,它为从1开始应用的每一行分配一个序号。若按照某个字段分区进行排序的话,例如按照IndustrySubGroupName进行分区,根据数值进行排名,也是会并列显示。当有相同的分数时,它们的排名结果是并列的,例如,1,2,2,3。即:遇到不同IndustrySubGroupName分区,会重新计算该分区的排名。当从工业机器人,切换到特种机器人时,就成了另一个分区,排名会重新计算。(1)若按照数值直接进行排序的话,例如按照分组统计的数量进行排名。原创 2023-10-13 16:09:38 · 2619 阅读 · 0 评论 -
mysql中遇到查询字段的别名与函数冲突问题
上面使用 DENSE_RANK() 函数来计算排名,结果使用rank,由于在mysql中Rank()函数也是计算排名的,别名与这个函数名称冲突导致语句报错。可以给别名rank加单引号(mysql中string类型只支持单引号),就可以解决冲突问题。WHERE IndustrySubGroupName='工业机器人'比如以下哎,我查询城市行业数量排名。原创 2023-10-13 15:08:24 · 290 阅读 · 0 评论 -
mysql查询根据中文字母排序
直接转换字段为gbk。birary不是函数,是类型转换运算符,它用来强制它后面的字符串为一个二进制字符串,可以理解为在字符串比较的时候区分大小写原创 2023-09-26 17:17:58 · 1397 阅读 · 0 评论 -
mysql拼接函数
在实际开发中,比如需要获取每组中预期收获时间段数据,单上面得写法只能分两个字段获取,再在你的代码里拼接,但是如果使用如下几种mysql得拼接函数即可直接查询出来原创 2023-09-18 15:38:32 · 286 阅读 · 0 评论 -
MySQL 内置函数NOW() 和 SYSDATE() 区别
在mysql中,Now()和SYSTEM()函数返回的都是当前的时间戳值,且格式一样原创 2023-09-13 14:34:30 · 640 阅读 · 0 评论 -
MySQL内置PERIOD_DIFF()函数用法注意事项
即:用于计算用于表示年份和月份的 YYMM 或 YYYYMM 值之间的月份差。它接受两个参数 - YYYYMM 格式的两个日期。P1 和 P2 是 YYYYMM 格式的两个日期值。PERIOD_DIFF() 函数的返回值是一个。,表示两个日期之间的月份差。原创 2023-09-13 11:47:54 · 1108 阅读 · 0 评论 -
mysql内置函数DATE_FORMAT()用法及注意事项
mysql内置函数DATE_FORMAT()用法及注意事项。原创 2023-09-13 11:43:32 · 4610 阅读 · 0 评论 -
mysql 函数TIMESTAMPDIFF()用法
datetime_expr1是DATE类型值,datetime_expr2是DATETIME类型值,TIMESTAMPDIFF函数会将datetime_expr1自动转换成DATETIME类型值(即在日期后面加上时间“00:00:00”)的结果,其中datetime_expr1和datetime_expr2可以是DATE或DATETIME类型值。用于计算两个日期的时间差,可以计算到年、季度、月、星期、天、时、分、秒。unit日期比较返回的时间差单位。QUARTER:季度。原创 2023-09-13 11:25:22 · 1542 阅读 · 0 评论 -
mysql 时间日期函数的区别以及计算函数
- 计算日期差,expr1和expr2可以是date类型或者datetime类型,但是只计算相差几天。-- PERIOD_DIFF() 函数的返回值是一个整数,表示两个日期之间的月份差,P1-P2的差。-- 注意计算的是datetime_expr2 - datetime_expr1 相差的值。-- 其中unit 就是计算关键,它可以是年、季度、月、星期、天、时、分、秒。-- 计算两个日期时间差,可以计算到年、季度、月、星期、天、时、分、秒。-- P1 和 P2 为 YYYYMM 格式的两个日期值。原创 2023-09-13 11:20:01 · 118 阅读 · 0 评论 -
使用mysql数据库管理工具可视化创建定时事件任务
在重复的计划任务中,时间(单位)的数量可以是任意非空(Not Null)的整数式,时间单位是关键词:YEAR,MONTH,DAY,HOUR,MINUTE 或者SECOND。2. EVERY 时间(单位)的数量时间单位[STARTS 时间戳] [ENDS时间戳],用来完成重复的计划任务。在两种计划任务中,时间戳可以是任意的TIMESTAMP 和DATETIME 数据类型,时间戳需要大于当前时间。导航栏,会弹出表空间和事件两项,点击事件会打开如下界面,可以进行设计、新建、删除事件操作。初学者来说又简单易操作。原创 2023-09-11 10:40:50 · 145 阅读 · 0 评论 -
Mysql定时任务之手动创建
警示:这里讲下实际开发中踩到得坑,就是虽然这里用set global event_scheduler = on语句开启了事件,d但是生产环境中服务器断电重启或者mysql服务重启,或导致事件调度器被关闭得情况,所有事件都不在起作用,要想解决这个办法,则需要在my.ini(Windows系统)/my.cnf(Linux系统)文件中加入event_scheduler = ON;但是它与触发器又有所区别,触发器只针对某个表产生的事件执行一些语句,而事件调度器则是在某一段(间隔)时间执行一些语句。原创 2023-09-11 10:04:51 · 110 阅读 · 0 评论 -
mysql定时任务时间配置
由于为了方便查看,所以这篇介绍跟上篇。原创 2023-09-11 10:12:31 · 200 阅读 · 0 评论 -
Mql 计算两个时间差函数
expr1最新时间,expr2以前的时间,这样计算出来的是正值,否则是负值。2、日期查询-SQL查询今天、昨天、7天内、30天。原创 2023-09-01 14:44:26 · 851 阅读 · 1 评论