SQL的執行順序
實際上sql查詢,不是從SELECT開始執行的。
看到大神發的文章,總結了一下。
FROM JOIN --> WHERE --> GROUP BY --> HAVING ->SELECT(視窗函數在此發生)->ORDER BY -> LIMIT
了解順序:
1.可以在GROUP BY 之後使用 WHERE 嗎?
答:不行,先加where條件,然後再分組group by
CREATE TABLE(
text
int(10) NOT NULL,
id
varchar(255) NOT NULL,
name
number
int(255) NOT NULL,
PRIMARY KEY (
id
)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
2.可以對視窗函數傳回的結果進行過濾麼?
答:不行,視窗函數是select語句裡,而select是在where和group by之後進行的。
3.可以基于group by 裡的東西進行 order by嗎?
答:可以,order by 基本上是在最後執行的,是以可以基于任何東西進行 order by;
插播面試題:
order by 預設是升序還是降序?
答:升序
4.limt 是在什麼時候執行?
答:在最最最最最最最最最後!