MySQL資料庫的分組操作,語句拼接,列轉行操作

2020-12-13 anyux1

大家好,我是anyux。本文介紹MySQL資料庫的分組操作,語句拼接,列轉行操作。

關於group by 的sql_mode

關於group by 的sql_mode

only_full_group_by

說明:僅是MySQL5.7中存在,5.6和8.0都沒有,查看sql_mode

select @@sql_mode;

在帶有group by 子句的select中,select後的條件列(非主鍵列),要麼是group by 後面的列,要麼需要在函數中

示例group by 錯誤

select user,host from mysql.user group by user;

報錯內容

ERROR 1055 (42000): Expression 2 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'mysql.user.Host' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by

解釋以上報錯 select 查詢的欄位不在 group by 子句中,並且未使用聚合函數包含'mysql.user.Host',這和sql_mode=only_full_group_by 不兼容 臨時關閉sql_mode

set session sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';

永久關閉sql_mode 在/etc/my.cnf中找到[mysqld],粘貼以下內容,保存退出,重啟MySQL務

sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION'

concat的使用

concat的使用

可以將多個列合併成一個列,做列值拼接

select concat(user,host) as 'user@host' from mysql.user;

group_concat的使用

group_concat的使用

可以做列轉行

use school;select cno as 學號, group_concat(score) as 成績總覽 from sc group by cno;

相關焦點

  • MYSQL資料庫操作案例
    MySQL 資料庫使用SQL SELECT語句來查詢數據。MySQL UNION 操作符用於連接兩個以上的 SELECT 語句的結果組合到一個結果集合中。>GROUP BY 語句根據一個或多個列對結果集進行分組。
  • Python 操作MySQL資料庫
    >安裝mysql資料庫並創建號表、欄位。(詳細步聚這篇就省略了) 第二步:mysqlclient-1.3.12-cp36-cp36m-win_amd64.whl安裝命令:pipinstall mysqlclient-1.3.12-cp36-cp36m-win_amd64.whl
  • python對mysql資料庫的操作(一)
    本文章介紹python對mysql資料庫的基本操作,以及編寫一個模擬用戶的註冊。
  • 基礎SQL-DDL語句-操作資料庫-操作表
    基礎SQL-DDL語句-操作資料庫-操作表分類描述關鍵字DDL(Data Definition Language)數據定義語言用來定義資料庫對象:資料庫,表,列create,drop,alter等1.DDL操作資料庫1.1 創建資料庫直接創建資料庫CREATE DATABASE 資料庫名;判斷是否存在並創建資料庫(了解)CREATE DATABASE IF NOT EXISTS 資料庫名;創建資料庫並指定字符集(了解)CREATE DATABASE 資料庫名 CHARACTER SET 字符集;具體操作:
  • MySQL資料庫常用操作語言總結
    password' WITH GRANT OPTION;撤銷用戶權限:REVOKE ALL PRIVILEGES ON databasename.* FROM 'username'@'host';授權完後刷新權限:FLUSH PRIVILEGES;刪除用戶:DROP USER 'username'@'host';修改用戶密碼:UPDATE mysql.user
  • 「詳細」MySQL資料庫與JDBC編程
    >delete from語句單表查詢where後的其他運算符order by輸出排序資料庫函數MySQL單行函數分組和組函數DDL(Data Definition Language,數據定義語言)語句主要操作資料庫對象。創建表CREATE TABLE [模式名.]
  • MySQL資料庫及應用
    SHOWDATABASE;答案: C3 單選 關於資料庫的執行操作,_____________選項是錯誤的。A. SHOWDATABASES語句用於查詢當前資料庫系統中已經存在的資料庫B.MOMERY答案: B8 單選 在控制臺中執行「____________ 資料庫名;」語句表示選擇當前要操作的資料庫,執行成功後可以向資料庫中添加表和視圖等內容。A. USEB. USESC.
  • MySQL資料庫操作語法詳解
    1 資料庫創建建庫語句如下:CREATE DATABASE|SCHEMA會創建一個給定名稱的資料庫,只有擁有CREATE權限才能使用該語法。不加IF NOT EXISTS時,如果需要創建資料庫已經同名存在則會報錯。
  • 考前複習必備MySQL資料庫(關係型資料庫管理系統)
    查看資料庫資料庫創建好後,使用show語句查看當前mysql中有哪些資料庫。刪除資料庫使用drop語句刪除資料庫,語法格式如下:刪除創建的web資料庫,命令如下:刪除資料庫是一個不可逆的操作。mysql數據表管理創建數據表使用create table語句,語法格式如下。
  • MySQL最常用分組聚合函數
    group by子句  根據給定列或者表達式的每一個不同的值將表中的行分成不同的組,使用組函數返回每一組的統計信息規則:  ①出現在SELECT子句中的單獨的列,必須出現在GROUP BY子句中作為分組列  ②分組列可以不出現在SELECT子句中  ③分組列可出現在SELECT子句中的一個複合表達式中  ④如果GROUP
  • MySQL的SQL語句 - 資料庫管理語句 - 帳戶管理語句 - REVOKE 語句
    只有所有指定用戶和角色都成功時,該語句才會被寫入二進位日誌。要撤銷所有權限,請使用第二種語法,它刪除指定用戶或角色的所有全局、資料庫、表、列和例程權限:REVOKE ALL PRIVILEGES, GRANT OPTION FROM user_or_role [, user_or_role] ...REVOKE ALL PRIVILEGES,GRANT OPTION 不撤銷任何角色。
  • 使用Python操作SQL Server資料庫
    沒有mysql一樣的show database;命令,所以顯示所有的資料庫都比較麻煩。列sysconstrains 每個資料庫 限制sysfilegroups 每個資料庫 文件組sysfiles 每個資料庫 文件sysforeignkeys 每個資料庫 外部關鍵字sysindexs 每個資料庫 索引sysmenbers 每個資料庫 角色成員sysobjects 每個資料庫 所有資料庫對象syspermissions 每個資料庫 權限systypes 每個資料庫 用戶定義數據類型
  • MySQL語句中去除重複語句
    刪除資料庫中重複的記錄,只保留一條
  • Python 資料庫騷操作 -- MySQL
    ,前面兩篇分別是:《Python 資料庫騷操作 -- MongoDB》《Python 資料庫騷操作 -- Redis》,這篇主要介紹 MySQL 的 orm 庫 SQLAlchemy 。Object Relational Mapper,描述程序中對象和資料庫中數據記錄之間的映射關係的統稱。介紹完了,那就走起唄!MySQL GUI 工具首先介紹一款 MySQL 的 GUI 工具 Navicat for MySQL,初學 MySQL 用這個來查看數據真的很爽。可以即時看到數據的增刪改查,不用操作命令行來查看。Navicat for MySQL
  • 了解資料庫類型及MySQL資料庫常用命令行
    2、資料庫的分類(1) 關係型資料庫(sql資料庫):中型:mysql(埠號3306)、sql server大型:Oracle(埠號1521)(2) 非關係型資料庫(no-sql資料庫)>MongoDB、Redis3、mysql軟體:Sql yog:資料庫客戶端工具(圖形用戶界面工具)方便操作資料庫。
  • Python操作Mysql資料庫進階篇——查詢操作詳解(一)
    前面我們已經介紹了在Python3.x中如何連接一個Mysql資料庫,以及怎麼樣對這個資料庫創建一個表,增刪改查表裡的數據。想必大家對Mysql資料庫和簡單的sql語句有了一定的了解,其實sql語句博大精深,裡面的知識點非常的多,估計介紹一個星期也難以介紹全面。今天我們就來通過Mysql這種普遍使用的關係型資料庫來深入了解一下sql語句中比較高級的查詢部分。
  • MySQL的SQL語句 - 資料庫管理語句 - 帳戶管理語句 - GRANT 語句 (3)
    在執行 GRANT 語句之後註冊的動態權限不會追溯到任何帳戶。MySQL 將全局權限存儲在 mysql.user 系統表。資料庫權限應用於給定資料庫中的所有對象。如果沒有默認資料庫,則會發生錯誤。可以在資料庫級別指定 CREATE、DROP、EVENT、GRANT OPTION、LOCK TABLES 和 REFERENCES 權限。表或例程權限也可以在資料庫級別指定,在這種情況下,它們應用於資料庫中的所有表或例程。MySQL 將資料庫權限存儲在 mysql.db 系統表。表權限應用於給定表中的所有列。
  • mysql常用sql語句總結
    ;update 表名 set列1=新值1 ,列2=新值2Where expr;(不加影響所有行);delete from 表名 where expr;select 列1,列2,.列n from 表名 where expr;select * from tmp where name is not null;mysql> select
  • 【資料庫】MySQL常見SQL語句
    databasename - 資料庫名,tablename-表名,如果要授予該用戶對所有資料庫和表的相應操作權限則可用表示, 如.(對所有資料庫所有表相應權限),datebasename.(對指定資料庫所有表相應權限)。
  • 提升SQL語句性能的方法
    線上mysql資料庫爆出一個慢查詢,DBA觀察發現,查詢時伺服器IO飆升,IO佔用率達到100%, 執行時間長達7s左右。優化方法:優化的總體思路是拆分sql,將排序操作和查詢所有信息的操作分開。t ON t.id = g.type_id AND t.deleted = 0 WHERE g.deleted = 0 ORDER BY g.modify_time DESC LIMIT 20 ;第二條語句:查詢符合條件的詳細數據,將第一條sql的結果使用in操作拼接到第二條的sqlSELECT DISTINCT g.*, cp.name AS cp_name,c.name AS