下面小編就為大家帶來一篇mysql 列轉行,合併欄位的方法(必看)。小編覺得蠻不錯的,現在就分享給大家,也給大家做個參考。一起跟著小編過來看看吧
資料表:
列轉行:利用max( case when then)
(case course when '語文' then score else 0 end) ---判斷
as 語文---別名作為列名
SELECT `name`, MAX( CASE WHEN course='语文' THEN score END ) AS 语文, MAX( CASE WHEN course='数学' THEN score END ) AS 数学, MAX( CASE WHEN course='英语' THEN score END ) AS 英语 FROM student GROUP BY `name` ;
合併欄位顯示:利用group_cancat (course,”:”,”score”)
SELECT `name`, GROUP_CONCAT(course, ":", score) AS 成绩 FROM student GROUP BY `name`;
#group_concat(),手冊上說明:該函數傳回帶有來自一個群組的連接的非 NULL值的字串結果。
比較抽象,難以理解。
通俗點理解,其實是這樣的:group_concat()會計算哪些行屬於同一組,將屬於同一組的列顯示出來。要傳回哪些列,由函
數參數(就是字段名)決定。分組必須有個標準,就是依照group by指定的欄位進行分組。
group_concat函數應該是在內部執行了group by語句,這是我的猜測。
1.測試語句:
SELECT GROUP_CONCAT(`name`) FROM student GROUP BY `name`;
結果去找name中去找哪些值是一樣的,如果相等,就全部列出來,以逗號分割進行列出,如下:
group_concat('name')
##2 .測試:
SELECT GROUP_CONCAT(`name`) FROM student ;
結果:
#group_concat('name')
3.測試常數對group_concat()的設定影響:
SET @@GROUP_CONCAT_MAX_LEN=4手冊中提到設定的語法是這樣的:
SET [SESSION | GLOBAL] group_concat_max_len = val;
##兩種有什麼差別?
SET @@global.GROUP_CONCAT_MAX_LEN=4; global可以省略,那么就变成了:SET @@GROUP_CONCAT_MAX_LEN=4;
4.使用語句SELECT
GROUP_CONCAT(`name`)
FROM
student;
group_concat('name')
結論:group_concat()函數需要與group by語句在一起使用,才能得到所需的效果。 原因可以這樣理解:group_concat()得到是屬於x群組的所有成員(函數裡面列參數指定需要顯示哪些欄位)。 x組從哪裡來?
如果沒有group by進行指定,那麼根本不知道group_concat()根據哪個分組進行顯示出成員。 所以,像上面沒有group by子句的時候,就顯示了劉備,關羽,張飛,劉備,關羽,張飛,劉備,關羽,張飛。
實際上什麼時候需要用到這個函數?
假如需要
的結果是這樣:左邊顯示群組名,右邊想顯示該組別下的所有成員資訊。用這個函數,就可以省去很多事情了。
另外,假如我這樣使用:SELECT
`name`,
GROUP_CONCAT(course, ":", score) AS 成绩
FROM
student
;
意義不大。
group_concat()指定一個欄位是最好的情況。如果指定了多個列。
SELECT `name`, GROUP_CONCAT(course, ":", score) AS 成绩 FROM student GROUP BY `name`;
那麼顯示結果類似這樣:
group_concat(course,":",score)
#
以上是詳解mysql列轉行,合併欄位的方法(圖文)的詳細內容。更多資訊請關注PHP中文網其他相關文章!

MySQLhandlesconcurrencyusingamixofrow-levelandtable-levellocking,primarilythroughInnoDB'srow-levellocking.ComparedtootherRDBMS,MySQL'sapproachisefficientformanyusecasesbutmayfacechallengeswithdeadlocksandlacksadvancedfeatureslikePostgreSQL'sSerializa

mySqlHandLestActionSefectefectionalytheinnodbengine,supportingAcidPropertiessimilartopostgresqlesqlandoracle.1)mySqluessRepeTableReadAbereadasTheDefaultIsolationLeleleteLevel,whatcanBeadJustEdToreDtoreDtoreDtoreadCommittedCommittenCommententCommittedForHigh-TrafficsCenarios.2)

最佳實踐包括:1)理解數據結構和MySQL處理方式,2)適當索引,3)避免SELECT*,4)使用合適的JOIN類型,5)謹慎使用子查詢,6)使用EXPLAIN分析查詢,7)考慮查詢對服務器資源的影響,8)定期維護數據庫。這些做法能使MySQL查詢不僅快速,還具備可維護性、可擴展性和資源效率。

MySQLisbetterforspeedandsimplicity,suitableforwebapplications;PostgreSQLexcelsincomplexdatascenarioswithrobustfeatures.MySQLisidealforquickprojectsandread-heavytasks,whilePostgreSQLispreferredforapplicationsrequiringstrictdataintegrityandadvancedSQLf

MySQL通過異步、半同步和組複製三種模式處理數據複製。 1)異步複製性能高但可能丟失數據。 2)半同步複製提高數據安全性但增加延遲。 3)組複製支持多主複製和故障轉移,適用於高可用性需求。

EXPLAIN語句可用於分析和提升SQL查詢性能。 1.執行EXPLAIN語句查看查詢計劃。 2.分析輸出結果,關注訪問類型、索引使用情況和JOIN順序。 3.根據分析結果,創建或調整索引,優化JOIN操作,避免全表掃描,以提升查詢效率。

使用mysqldump進行邏輯備份和MySQLEnterpriseBackup進行熱備份是備份MySQL數據庫的有效方法。 1.使用mysqldump備份數據庫:mysqldump-uroot-pmydatabase>mydatabase_backup.sql。 2.使用MySQLEnterpriseBackup進行熱備份:mysqlbackup--user=root--password=password--backup-dir=/path/to/backupbackup。恢復時,使用相應的命


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

EditPlus 中文破解版
體積小,語法高亮,不支援程式碼提示功能

SublimeText3漢化版
中文版,非常好用

WebStorm Mac版
好用的JavaScript開發工具

ZendStudio 13.5.1 Mac
強大的PHP整合開發環境

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)