成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Group By 有哪些注意事項?你知道嗎?

數據庫 MySQL
SQL 語句編寫一定要遵循此先后順序:select、from、where、group by、having、order by、limit。其中 having 或 group by 都可單獨使用,并且在 MySQL 5.7.5 之后,group by 和 having 可以使用別名查詢,但 where 不能使用別名。

注意:本文以下內容基于 MySQL 5.7 InnoDB 數據庫引擎。

1、group by 后面不能加 where

在 MySQL 中,所有的 SQL 查詢語法要遵循以下語法順序:

  1. select
  2. from
  3. where
  4. group by
  5. having
  6. order by
  7. limit

以上語法順序是不能前后互換的,否則報錯。比如我們不能在 group by 之后添加 where 查詢語句,否則會出現如下錯誤:

面試突擊62:group by 有哪些注意事項?

語法順序的執行是和 MySQL 的 select 語句執行順序相關的,select 執行先后順序如下:

  1. from 階段
  2. where 階段
  3. group 階段
  4. having 階段
  5. select 階段
  6. order by 階段
  7. limit 階段

注意:其中 select 比較特殊,在進行查詢語句編寫時,要寫在最前面,其余語法順序要和執行先后順序保持一致。

2、having 或 group by 可單獨使用

having 和 group by 可以單獨使用,如下查詢所示:

面試突擊62:group by 有哪些注意事項?

3、having 和 group by 可使用別名

當 having 單獨使用時,它的作用和 where 類似,但又有細微的不同。比如在 where 中不能使用別名,但 having 和 group by 卻可以別名。咱們創建一個測試表來演示一下,建表 SQL 如下:

drop table if exists student_score;
create table student_score(
id int primary key auto_increment comment '主鍵',
name varchar(250) comment '姓名',
math decimal(4,1) comment '數學成績',
chinese decimal(4,1) comment '語文成績'
);
insert into student_score(name,math,chinese) values('張三',50,50),('李四',80,80),('王五',90,90);

表中的數據如下圖所示:

面試突擊62:group by 有哪些注意事項?

當我們使用總成績別名 total 分別在 where 和 having 中使用時,查詢結果如下:

面試突擊62:group by 有哪些注意事項?

從上述結果可以看出,having 查詢可以使用 select 中的別名,而 where 不能使用別名。

除了 having 可以使用別名之外,group by 也可以使用別名,如下圖所示:

面試突擊62:group by 有哪些注意事項?

為什么where不能用別名?為having卻可以?

where 中不能使用別名,這和 MySQL 語句執行順序有關,MySQL 語句執行順序如下:

  1. from 階段
  2. where 階段
  3. group 階段
  4. having 階段
  5. select 階段
  6. order by 階段
  7. limit 階段

也就是說,在執行 where 查詢時,select 還沒執行,因此在 where 中想要使用還未執行的 select 中的別名是不行的。那從上面的執行順序可以看到,having 執行也在 select 之前,為什么它就可以使用 select 中的別名呢?

這是因為 MySQL 在 5.7.5 之后做了擴展,允許在 having 中使用別名,官方文檔中有相應的說明,如下圖所示:

面試突擊62:group by 有哪些注意事項?

MySQL 官方文檔地址:

https://dev.mysql.com/doc/refman/5.7/en/group-by-handling.html。

PS:group by 能使用別名的原理和 having 類似。

總結

SQL 語句編寫一定要遵循此先后順序:select、from、where、group by、having、order by、limit。其中 having 或 group by 都可單獨使用,并且在 MySQL 5.7.5 之后,group by 和 having 可以使用別名查詢,但 where 不能使用別名。

責任編輯:姜華 來源: 今日頭條
相關推薦

2023-04-26 10:06:08

RocketMQ屬性Consumer

2010-05-07 10:19:48

Oracle 注意事項

2023-04-26 10:21:04

2022-08-02 06:55:35

移動設備Android

2020-11-04 17:35:39

網絡安全漏洞技術

2022-12-09 19:00:02

Vite兼容性BigInt

2024-10-22 09:59:36

虛擬化容器化系統

2022-09-14 08:11:06

分頁模糊查詢

2024-11-26 14:29:48

2022-07-14 08:02:02

NPM依賴治理

2024-02-19 08:01:59

服務微服務授權

2022-01-09 23:20:50

手機國產蘋果

2023-12-07 07:08:09

Angular函數

2023-09-01 07:38:45

ArrayListArrayst實線類

2024-05-28 09:12:10

2024-04-07 00:00:00

ESlint命令變量

2023-07-04 08:48:24

靜態代碼分析工具

2020-09-28 11:14:57

線程數據語言

2022-03-13 18:53:31

interfacetypeTypeScript

2023-12-20 08:23:53

NIO組件非阻塞
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 男女羞羞免费视频 | 久久伦理电影 | 国产成人精品久久二区二区91 | 午夜色播 | 成人深夜福利 | 男女羞羞视频在线免费观看 | 国产日产精品一区二区三区四区 | 99在线资源 | 国产专区在线 | 久久久久久久久久久久久久久久久久久久 | 亚洲成av人影片在线观看 | 91亚洲国产成人久久精品网站 | 久久青草av | 日日噜噜噜夜夜爽爽狠狠视频97 | 91av视频在线播放 | 亚洲a一区 | 国产精品美女一区二区三区 | 午夜影院在线观看 | 日本在线观看视频 | 中文字幕日韩欧美一区二区三区 | 天天操伊人| 精品一区二区久久 | 久久久久九九九女人毛片 | 精品国产乱码久久久久久老虎 | 亚洲福利一区 | 日产精品久久久一区二区福利 | www.伊人.com| 蜜月va乱码一区二区三区 | 青草福利 | 欧美日韩在线视频一区二区 | 欧美精品在线观看 | 日本免费一区二区三区视频 | 91麻豆精品一区二区三区 | 一区二区三区四区在线 | 中文字幕在线视频免费视频 | 国产成人99久久亚洲综合精品 | 丁香六月伊人 | 日韩欧美在线免费观看 | 99精品在线 | 日韩av在线中文字幕 | 国产ts人妖系列高潮 |