最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

MySQL中SQL執(zhí)行順序及最容易踩的3個(gè)坑

 更新時(shí)間:2026年04月19日 15:33:20   作者:踏著七彩祥云的小丑  
SQL執(zhí)行順序是MySQL核心原理之一,深入理解它有助于我們編寫(xiě)出更高效、更可靠的查詢(xún)語(yǔ)句,下面這篇文章主要介紹了MySQL中SQL執(zhí)行順序及最容易踩的3個(gè)坑,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下

一、標(biāo)準(zhǔn)執(zhí)行順序

 FROM / JOIN / ON → WHERE → GROUP BY → HAVING → SELECT → DISTINCT → ORDER BY → LIMIT

1. FROM / JOIN / ON

第一步:先找表!

  • 確定從哪張表取數(shù)據(jù)
  • 多表關(guān)聯(lián)先拼接成一張大臨時(shí)表

沒(méi)有這一步,后面所有條件都無(wú)從談起。

2. WHERE

第二步:過(guò)濾行!

  • 從大表里刪掉不符合條件的數(shù)據(jù)
  • 對(duì)單條記錄篩選
  • 不能用聚合函數(shù)(SUM/COUNT/AVG)

WHERE 越早過(guò)濾,后面計(jì)算越快。

3. GROUP BY

第三步:分組!

  • 把數(shù)據(jù)按字段分組(如按班級(jí)、性別分組)
  • 分組后,一行代表一組

4. HAVING

第四步:過(guò)濾分組!

  • 對(duì)分組后的結(jié)果篩選
  • 可以用聚合函數(shù)
  • 必須在 GROUP BY 之后

WHERE 過(guò)濾行
HAVING 過(guò)濾組

5. SELECT

第五步:查要顯示的列!

  • 最后才計(jì)算你要查的字段
  • 計(jì)算別名、表達(dá)式、函數(shù)
  • 聚合函數(shù)(SUM/COUNT)在這里執(zhí)行

?? 重點(diǎn):WHERE 中不能用 SELECT 里的別名
因?yàn)?WHERE 比 SELECT 先執(zhí)行!

6. DISTINCT

第六步:去重!

  • 對(duì)查詢(xún)結(jié)果去掉重復(fù)行
  • 在 SELECT 之后執(zhí)行

7. ORDER BY

第七步:排序!

  • 對(duì)最終結(jié)果排序
  • 可以用別名
  • 執(zhí)行非??亢?/li>

8. LIMIT

第八步:截取前幾條!

  • 最后一步,只返回你要的行數(shù)

二、 SQL 完整演示執(zhí)行順序

你寫(xiě)的 SQL:

SELECT 
  class_name, COUNT(*) AS num
FROM student
WHERE age > 18
GROUP BY class_name
HAVING num > 10
ORDER BY num DESC
LIMIT 5;

真正執(zhí)行順序:

  1. FROM student 找到表
  2. WHERE age>18 過(guò)濾年齡
  3. GROUP BY class_name 按班級(jí)分組
  4. HAVING num>10 只保留人數(shù)>10的班級(jí)
  5. SELECT 計(jì)算班級(jí)名和數(shù)量
  6. ORDER BY 排序
  7. LIMIT 取前5

三、最容易踩的 3 個(gè)坑(必須記住)

坑1:WHERE 里不能用 SELECT 的別名

-- 錯(cuò)誤
SELECT name AS n FROM student WHERE n='張三'

原因:WHERE 比 SELECT 先執(zhí)行,根本不知道 n 是什么。

坑2:WHERE 不能用聚合函數(shù)

-- 錯(cuò)誤
SELECT COUNT(*) FROM student WHERE COUNT(*)>10

正確寫(xiě)法:

SELECT COUNT(*) FROM student GROUP BY class HAVING COUNT(*)>10

坑3:HAVING 必須跟 GROUP BY

沒(méi)有分組,就不能用 HAVING。

總結(jié)(最核心 3 條)

  1. FROM 最先執(zhí)行
  2. WHERE 在 GROUP BY 前面
  3. SELECT 在 HAVING 之后、ORDER BY 之前

總結(jié) 

到此這篇關(guān)于MySQL中SQL執(zhí)行順序及最容易踩的3個(gè)坑的文章就介紹到這了,更多相關(guān)MySQL SQL執(zhí)行順序內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論

突泉县| 乐清市| 道真| 奉化市| 区。| 呼玛县| 彰武县| 包头市| 广灵县| 上栗县| 屏东市| 永靖县| 浏阳市| 东至县| 凉城县| 都昌县| 扎赉特旗| 军事| 水城县| 固阳县| 新化县| 莱阳市| 连云港市| 天镇县| 阿拉尔市| 东方市| 建德市| 汉寿县| 青浦区| 乌恰县| 中超| 旅游| 珲春市| 皮山县| 长海县| 宝兴县| 嘉定区| 苍梧县| 东莞市| 基隆市| 卓尼县|