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.pswp.cn/bicheng/20493.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/20493.shtml
英文地址,請注明出處:http://en.pswp.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的…