MySQL常见操作

MySQL字符串连接

在MySQL中,字符串连接可以使用CONCAT()函数或双竖线||操作符进行。下面是两种方法的示例:

  1. 使用CONCAT()函数:
CONCAT(',2001,', 'ABC')
  1. 使用双竖线||操作符:
',2001,' || 'ABC'

您可以根据自己的偏好选择其中一种方法来进行字符串连接。请在您的查询中使用适当的语法来确保字符串连接的正确性。

MySQL字符串分割

例如有字符串: ,1004,2003,

则:


```sqlSUBSTRING_INDEX( SUBSTRING_INDEX( A.sub_channel, ',', 2 ), ',', - 1 ) AS sub2,-->1004SUBSTRING_INDEX( SUBSTRING_INDEX( A.sub_channel, ',', 3 ), ',', - 1 ) AS sub3,-->2003

## Mysql不同条件设置相同的值(使用子查询)WHEN type=1 THEN payable_price WHEN type=2 THEN payable_price ELSE MAX(payable_price)type=1 表示订单维度,type=2表示商品维度,需要无论type值为多少都取type=1时的payable_price值解决方案:
使用SQL子查询;```sql
SELECT  CASE   WHEN type = 1 THEN payable_price  WHEN type = 2 THEN (SELECT payable_price FROM your_table WHERE type = 1 LIMIT 1)  ELSE (SELECT MAX(payable_price) FROM your_table)  END AS amount  
FROM your_table;

​SQL explain 显示子查询A类型为ALL怎么优化

当 SQL EXPLAIN 显示子查询 A 的类型为 ALL 时,这意味着数据库系统正在执行全表扫描,而不是使用索引来执行子查询。全表扫描可能会导致性能下降,特别是在大型表上。

为了优化这种情况,您可以考虑以下几点:

  1. 索引优化

    • 确保表 order_goods 和 orders 上存在适当的索引,以便优化查询性能。在子查询中使用的列(如 A.serial、A.order_id、A.goods_sku_id、A.remarks)应该有相应的索引。
    • 索引可以帮助数据库系统更快地定位和检索数据,减少全表扫描的需要。
  2. 重写查询

    • 考虑重写查询以减少全表扫描的需求。您可以尝试优化查询逻辑,使其更有效率地利用索引。
    • 可以尝试拆分复杂的查询为多个简单的查询,然后使用 JOIN 来组合结果。
  3. 优化查询条件

    • 确保查询条件能够充分利用索引。避免在 WHERE 子句中使用函数或操作符,这可能会导致索引失效。
    • 尽量避免在 WHERE 子句中使用 LIKE '%pattern%' 这样的模糊搜索,因为这种模式匹配会导致索引无法有效使用。
  4. 统计信息更新

    • 确保数据库中的统计信息是最新的,这有助于优化查询执行计划。您可以通过更新表的统计信息来帮助优化查询性能。
  5. 分析执行计划

    • 通过分析执行计划(EXPLAIN)来了解数据库系统是如何执行查询的,以便进一步优化查询。

综上所述,优化全表扫描的方法包括索引优化、查询重写、优化查询条件、更新统计信息和分析执行计划。通过这些方法,您可以尝试改善查询性能并减少全表扫描的情况。

MySQL全部扫描分析

要查看为什么 MySQL 选择执行全表扫描的原因,你可以使用 EXPLAIN 命令来分析查询执行计划。以下是如何使用 EXPLAIN 命令的步骤:

  1. 在查询前添加 EXPLAIN:在你的查询语句之前添加关键字 EXPLAIN

  2. 运行查询:运行带有 EXPLAIN 的查询语句。

  3. 查看执行计划:执行计划将显示有关 MySQL 如何执行查询的详细信息,包括访问类型(type)、使用的索引、扫描的行数等。

下面是一个示例查询和执行计划的步骤:

EXPLAIN
SELECTA.serial,GROUP_CONCAT(DISTINCT COALESCE(A.imei, B.imei)) AS imei_list
FROMoppo_cn.t_order_goods_service_bind A
JOIN oppo_cn.t_order_goods_imei_bind B ON A.serial = B.serial
GROUP BY serial
LIMIT 5000;

运行上述带有 EXPLAIN 的查询后,你将看到类似以下的输出,其中包含了关于查询执行计划的信息:

+----+-------------+-------+--------+------------------+---------+---------+---------------------------------------+------+-------------+
| id | select_type | table | type   | possible_keys    | key     | key_len | ref                                   | rows | Extra       |
+----+-------------+-------+--------+------------------+---------+---------+---------------------------------------+------+-------------+
| 1  | SIMPLE      | A     | index  | PRIMARY          | PRIMARY | 4       | NULL                                  | 1000 | Using index |
| 1  | SIMPLE      | B     | eq_ref | PRIMARY,serial   | PRIMARY | 4       | oppo_cn.A.serial                      | 1    | Using index |
+----+-------------+-------+--------+------------------+---------+---------+---------------------------------------+------+-------------+

在这个输出中,你可以查看 type 列,它会告诉你 MySQL 访问表的方式。如果你看到 type 列的值为 ALL,那么 MySQL 正执行全表扫描。在 Extra 列中,可能会提供关于为什么 MySQL 选择执行全表扫描的额外信息。

通过分析 EXPLAIN 的输出,你可以了解为什么 MySQL 选择执行全表扫描,从而优化查询和索引以提高性能。

MySQL查询数据不一致

在您提供的两个查询中,您发现了查询结果的数据量不一致,一个查询结果为404条,另一个查询结果为410条。为了优化这两个查询并确保结果的一致性,您可以尝试以下几点:

  1. 统一字段命名:在两个查询中确保使用相同的字段命名,以便后续比较结果集时更容易对应。

  2. 检查 JOIN 条件:仔细检查 JOIN 条件,确保连接的字段是正确的,并且 JOIN 操作能够正确地匹配数据。

  3. 优化 WHERE 条件:在 WHERE 子句中,确保逻辑运算符的使用是符合预期的,尤其是 OR 和 AND 的组合使用。

  4. 使用合适的 JOIN 类型:根据数据之间的关系,选择合适的 JOIN 类型(如 INNER JOIN、LEFT JOIN 等)。

  5. 避免重复数据:确保在 JOIN 操作中不会因为重复数据而导致结果数量不一致。

  6. 检查 GROUP BY 条件:在 GROUP BY 子句中,确保正确地对结果进行分组。

  7. 性能优化:如果数据量较大,可以考虑对查询进行性能优化,例如添加合适的索引以提高查询效率。

  8. 逐步调试:可以逐步调试查询,逐步添加条件和 JOIN 操作,以便发现导致结果不一致的具体步骤。

MySQL timestamp日期格式转换为varchar日期格式

MySQL timestamp日期格式转换为varchar日期格式

DATE_FORMAT(A.paid_at, '%Y-%m-%d %H:%i:%s')='0000-00-00 00:00:00'

MySQL unix时间戳和yyyy-mm-dd HH:mm:ss时间互转

MySQL yyyy-MM-dd HH:mm:ss格式转unix时间戳
转换为13位unix时间戳格式:UNIX_TIMESTAMP( created_at ) * 1000 AS created_at,

MySQL unix时间戳转换为 yyyy-MM-dd HH:mm:ss格式时间

FROM_UNIXTIME( A.create_time / 1000, '%Y-%m-%d %H:%i:%S' ) AS created_at

MySQL 字符串排序


在MySQL中,如果你有包含数字的字符串列,并且想要按照这些数字的大小进行排序,你可以使用CAST函数将字符串转换为数字,然后进行排序。以下是一个示例:

假设你有一个名为numbers的表,其中有一个名为num_str的字符串列,包含数字字符串,你可以按照这些数字的大小进行排序:

SELECT num_str
FROM numbers
ORDER BY CAST(num_str AS UNSIGNED);

在上面的示例中,CAST(num_str AS UNSIGNED)num_str列中的字符串转换为无符号整数,然后按照这些整数进行排序。这样就可以实现按照字符串中数字的大小进行排序。

请注意,使用CAST函数时,要确保字符串列中的所有值都可以转换为数字,否则可能会导致错误。如果有不符合要求的数据,可能需要进行数据清洗或处理。

MySQL JSON NULL查询


最近遇到个奇葩问题,查询MySQL表A里的一个字段content,字段数据是json格式的,格式类似下面这种:


```javascript
{"errorCode": "SVCSTG.ALS.200.200","errorMessage": "Report success.","result": null
}

```sql
select  JSON_EXTRACT(content,'$.result') as a from A where a<> NULL ;

查询不出result字段为null的数据,然后使用json_type()函数看下字段的数据类型

select  JSON_TYPE(JSON_EXTRACT(content,'$.result')) as a from A where a<> NULL ;

查询结果显示确实是NULL,那就见鬼了!然后检查了字段是否包含空格,空串结果还是排除不掉null的数据然后使用

select  JSON_TYPE(JSON_EXTRACT(content,'$.result')) as a from A where a!= 'null'
and a!='' and a IS NOT NULL;

查询的结果还是有null数据,然后突发奇想查查result值为null的数据呢?

select  JSON_TYPE(JSON_EXTRACT(content,'$.result')) as a from A where a IS NULL ;

查询结果显示查询出的数据不包含result字段,因此可以断定JSON_TYPE中的NULL数据类型和MySQL中的NULL不是一回事,最后试了下<>'NULL’才凑效

select  JSON_TYPE(JSON_EXTRACT(content,'$.result')) as a from A where a<> 'NULL' ;

这个sql查询出的结果才是理想的数据~

结论:MySQL中的字段中json串中字段的null值等价于JSON_TYPE字符串"NULL",坑爹啊

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/20493.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

TS38.300中的切换流程(很一般)

本文根据3GPP R18 TS 38.300第9.2.3节整理 切换(Handover)是移动终端(UE)进入RRC_CONNECTED状态后在不同服务小区(Cell)之间保持与网络联系唯一手段&#xff0c;期间首先通过控制面(C-Plane)进行无线测量、切换协商及触发等&#xff1b;为此3GPP在TS38.300中定义如下。 RAN系统…

shardingsphere5 自定义分片(sharding-algorithm)算法

背景 在做分表时&#xff0c;需要自定义算法。 这里实现的算法是&#xff1a; 分表字段的 hashCode 取余。 算法 public class UserShardingAlgorithm implements StandardShardingAlgorithm<String> {public static String type "USER_SHARDING_STRATEGY"…

2024KCon大会议题招募火热进行中

历时1个多月我们收到了来自全国各地小伙伴们的议题投递既有前瞻性的技术研判亦有安全领域的最新策略......感谢每一位对KCon大会倾注热情与支持的你&#xff01; 我们也收到了不少小伙伴的私信&#xff0c;有的因为工作繁忙有的因为在紧张备战2024网络安全攻防演练表示原定的时…

LeetCode2542最大子序列的分数

题目描述 给你两个下标从 0 开始的整数数组 nums1 和 nums2 &#xff0c;两者长度都是 n &#xff0c;再给你一个正整数 k 。你必须从 nums1 中选一个长度为 k 的 子序列 对应的下标。 对于选择的下标 i0 &#xff0c;i1 &#xff0c;…&#xff0c; ik - 1 &#xff0c;你的 …

监控易监测对象及指标之:全面监控LDAP服务器

随着企业信息化建设的不断深入&#xff0c;LDAP&#xff08;轻量级目录访问协议&#xff09;服务器作为重要的目录服务组件&#xff0c;其稳定性和性能直接关系到企业业务的连续性和 效率。为了确保LDAP服务器的稳定运行和高效性能&#xff0c;对其进行全面监控显得尤为重要。…

Kafka原生API使用Java代码-消费者组-消费模式

文章目录 1、消费模式1.1、创建一个3分区1副本的 主题 my_topic11.2、创建生产者 KafkaProducer11.2、创建消费者1.2.1、创建消费者 KafkaConsumer1Group1 并指定组 my_group11.2.3、创建消费者 KafkaConsumer2Group1 并指定组 my_group11.2.3、创建消费者 KafkaConsumer3Group…

算法练习第25天|491. 非递减子序列

491. 非递减子序列 491. 非递减子序列https://leetcode.cn/problems/non-decreasing-subsequences/ 题目描述&#xff1a; 给你一个整数数组 nums &#xff0c;找出并返回所有该数组中不同的递增子序列&#xff0c;递增子序列中 至少有两个元素 。你可以按 任意顺序 返回答案…

Flutter 中的 ButtonTheme 小部件:全面指南

Flutter 中的 ButtonTheme 小部件&#xff1a;全面指南 Flutter 是一个由 Google 开发的跨平台 UI 框架&#xff0c;它提供了一系列的组件来帮助开发者构建美观且功能丰富的应用。在 Flutter 的组件库中&#xff0c;ButtonTheme 是一个重要的小部件&#xff0c;它允许开发者统…

Linux、Windows安装python环境(最新版及历史版本指定版本)-python

目录 一、Linux环境二、windows环境最新版本下载指定版本下载 python 官网地址&#xff1a; https://www.python.org/ 一、Linux环境 以openEuler/CentOS为例 查看可安装python源版本 dnf provides python*默认安装新版本 dnf install -y python3. 进入python python退出p…

电源小白入门学习8——电荷泵电路原理及使用注意事项

电源小白入门学习8——电荷泵电路原理及使用注意事项 电荷泵简介电荷泵原理电荷泵设计过程中需要注意的点fly电容的安秒平衡DC/DC功率转换技术对比 电荷泵简介 电荷泵&#xff08;Charge Pump&#xff09;是一种电路拓扑结构&#xff0c;用于实现电压升压或降压的功能。它通过…

Python自动化测试断言详细实战代码(建议收藏)

&#x1f345; 视频学习&#xff1a;文末有免费的配套视频可观看 &#x1f345; 点击文末小卡片 &#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 在测试用例中&#xff0c;执行完测试用例后&#xff0c;最后一步是判断测试结果是 pass 还是 fa…

sh发送邮件如何通过配置SMTP服务器来实现?

sh发送邮件的操作方法&#xff1f;如何使用Shell脚本自动发信&#xff1f; 在Shell脚本中实现邮件发送功能是一项常见需求&#xff0c;特别是在自动化任务执行或系统监控中。AokSend将介绍如何通过配置SMTP服务器来实现sh发送邮件的方法和注意事项。 sh发送邮件&#xff1a;安…

Redash、Superset、DataEase、Metabase、FineBI 和 Power BI 报表系统的优缺点

最近在做报表系统的选型与调研&#xff0c;其中尝试了Redash、Superset、DataEase、Metabase、FineBI 和 Power BI几个报表系统&#xff0c;主要想使用开源免费的&#xff0c;如果大家有好用的报表系统推荐欢迎留言。 Redash 优点&#xff1a; 开源且免费&#xff1a;Redash…

【已解决】Error in the HTTP2 framing layer

1.问题描述 在使用git将代码上传github的时候在最后一部push的时候遇到这个fatal 2.解决方案 由于我原先设置的origin是http协议下的&#xff0c;如下 git remote add origin https://github.com/Charlesbibi/Simple_Cloud.githttp协议下行不通不妨试一试ssh协议下&#xff…

跟风报考PMP,我真的后悔了

真的太香吧&#xff01; 我一开始没打算报考PMP证书的&#xff0c;但是我看身边很多朋友都因为PMP证书得到了升职加薪&#xff0c;这让我实在是一整个羡慕住了&#xff0c;所以我也去报考了PMP。 报考PMP前期我做了什么&#xff1f; 由于我是零基础&#xff0c;没有什么项目…

探索网格生成技术在AI去衣应用中的作用

引言&#xff1a; 随着人工智能技术的飞速发展&#xff0c;其在图像处理和计算机视觉领域的应用日益广泛。其中&#xff0c;AI去衣技术作为一种新兴的应用&#xff0c;引起了广泛的关注和讨论。然而&#xff0c;要实现这一功能并非易事&#xff0c;需要借助于先进的算法和技术。…

Mybatis第一讲——你会Mybatis吗?

文章目录 什么是MybatisMybatis的作用是什么 Mybatis 怎么使用注解的方式注解的多种使用Options注解ResultType注解 XML的方式update标签 #{} 和 ${}符号的区别#{}占位${}占位 ${}占位的危险性(SQL注入)数据库连接池 什么是Mybatis 首先什么是Mybatis呢&#xff1f;Mybatis是一…

latex bib引参考文献

1.bib内容 2.sn-mathphys-num是官方的参考文献格式 3.不用导cite包&#xff0c;文中这么写 4.end document前ckwx是自己命名的bib的名字

Ollama教程,本地部署大模型Ollama,docker安装方法,仅供学习使用

不可商用&#xff01;&#xff01;仅仅提供学习使用&#xff01; 先上视频教学&#xff1a; Ollama教程&#xff0c;本地部署大模型Ollama&#xff0c;docker安装方法&#xff0c;仅供学习使用&#xff01; 资料获取 &#xff1a; Ollama下载包和安装文档在这里&#xff1…

Web自动化测试-掌握selenium工具用法,使用WebDriver测试Chrome/FireFox网页(Java

目录 一、在Eclipse中构建Maven项目 1.全局配置Maven 2.配置JDK路径 3.创建Maven项目 4.引入selenium-java依赖 二、Chrome自动化脚本编写 1.创建一个ChromeTest类 2.测试ChromeDriver 3.下载chromedriver驱动 4.在脚本中通过System.setProperty方法指定chromedriver的…