鍍金池/ 問答/PHP  數(shù)據(jù)庫/ mysql 語句執(zhí)行順序的問題

mysql 語句執(zhí)行順序的問題

1.我用 select a,b from table where b=1 groupby c having d>2 orderby b desc 的一條sql語句

2.我一開始認(rèn)為會報(bào)錯的 原因是 我認(rèn)為mysql的執(zhí)行順序是 from where groupby select having orderby
所以having執(zhí)行之前已經(jīng)篩選出來數(shù)據(jù),數(shù)據(jù)中是沒有d這個字段的所以使用 having d > 2 會報(bào)錯的因?yàn)?code>having之前是沒有這個字段的
然而實(shí)際上是沒有報(bào)錯的,在這之前我記得我曾經(jīng)也測試過是報(bào)錯的不知道怎么回事現(xiàn)在又沒有錯了 一開始我以為是版本的問題,我現(xiàn)在測試的版本mysql是5.6的

3.我看了mysql的官網(wǎng)的文檔 沒有看懂,然后又網(wǎng)上找了好多答案 有from where group having select orderby的各種各樣,我現(xiàn)在都不知道相信那個了。

4.所以請教一下大神們mysql的sql執(zhí)行語句的順序的問題。

回答
編輯回答
你的瞳

...你看的沒有錯,有個寫順序的文章,但我忘了所以就不妨上來了。一,先 from 確定你需求的字段,二,where 對數(shù)據(jù)進(jìn)行篩選,所以在性能提升方面,where 的作用很重要。而這是一個虛擬表就已經(jīng)生成了,而不存在你說的 having 時(shí)還沒有 d 這個列。

2017年11月11日 17:17
編輯回答
毀了心

我覺得是from where select group having orderby理由如下:from where select先查找出數(shù)據(jù)來 group分組之后 having篩選 然后orderby排序

2017年6月2日 17:36