国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > MySQL > 正文

MySql中怎樣用group by

2024-07-24 12:33:41
字體:
來源:轉載
供稿:網友
  日常開發中,我們經常會使用到group by。親愛的小伙伴,你是否知道group by的工作原理呢?group by和having有什么區別呢?group by的優化思路是怎樣的呢?使用group by有哪些需要注意的問題呢?本文將跟大家一起來學習,攻克group by~
 
  1. 使用group by的簡單例子
  group by一般用于分組統計,它表達的邏輯就是根據一定的規則,進行分組。我們先從一個簡單的例子,一起復習一下哈。
 
  假設用一張員工表,表結構如下:
 
  CREATE TABLE `staff` (
    `id` bigint(11) NOT NULL AUTO_INCREMENT COMMENT '主鍵id',
    `id_card` varchar(20) NOT NULL COMMENT '身份證號碼',
    `name` varchar(64) NOT NULL COMMENT '姓名',
    `age` int(4) NOT NULL COMMENT '年齡',
    `city` varchar(64) NOT NULL COMMENT '城市',
    PRIMARY KEY (`id`)
  ) ENGINE=InnoDB AUTO_INCREMENT=15 DEFAULT CHARSET=utf8 COMMENT='員工表';
 
  2. group by 原理分析
  2.1 explain 分析
  我們先用explain查看一下執行計劃
 
  explain select city ,count(*) as num from staff group by city;
  MySql中如何用group by
 
  Extra 這個字段的Using temporary表示在執行分組的時候使用了臨時表
  Extra 這個字段的Using filesort表示使用了排序
  group by 怎么就使用到臨時表和排序了呢?我們來看下這個SQL的執行流程
 
  2.2 group by 的簡單執行流程
  explain select city ,count(*) as num from staff group by city;
  我們一起來看下這個SQL的執行流程哈
 
  創建內存臨時表,表里有兩個字段city和num;
  全表掃描staff的記錄,依次取出city = 'X'的記錄。
  判斷臨時表中是否有為 city='X'的行,沒有就插入一個記錄 (X,1);
  如果臨時表中有city='X'的行的行,就將x 這一行的num值加 1;
  遍歷完成后,再根據字段city做排序,得到結果集返回給客戶端。

(編輯:武林網)

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 中山市| 辽阳市| 平安县| 民勤县| 石柱| 岚皋县| 海伦市| 桐梓县| 交城县| 陇南市| 玛沁县| 永善县| 浙江省| 平舆县| 砚山县| 湖州市| 内乡县| 资讯 | 阿拉善左旗| 阿克苏市| 抚远县| 阿尔山市| 富裕县| 昌宁县| 五台县| 万山特区| 滁州市| 墨脱县| 历史| 承德市| 长垣县| 平远县| 泰州市| 南木林县| 雅江县| 商河县| 嘉义市| 大足县| 遂昌县| 甘泉县| 汾西县|