mysql有with as語句嗎

mysql5.7及以下的版本中沒有“with as”語句,在mysql8.0以上的版本中有“with as”語句;mysql5.7不支持該語句,但是可以利用創建臨時表的方式實現同樣的效果,在mysql8.0之后就支持利用該語句進行子查詢。

mysql有with as語句嗎

本教程操作環境:windows10系統、mysql8.0.22版本、Dell G3電腦。

mysql有with as語句嗎

WITH AS 子查詢部分【mysql5.7及以下不支持,mysql8.0及sqlserver支持】

子查詢部分的好處是部分查詢,不如有三個表連接在一條語句種出現多次

單個子查詢部分

with?a?as?(select?*?from??Student?a?inner?join?Course?b?ON?a.Id=b.StudentId??)select?*?from?a

解析:這樣在此語句種每次查詢a都是查詢了student和course表的聯查集合

多個查詢部分語法

with?a?as?(select?*?from??Student), b?as?(select?*?from?Course) select?*?from?a?inner?join?b?on?a.Id=b.StudentId

如果一整句查詢中多個子查詢都需要使用同一個子查詢的結果,那么就可以用with as,將共用的子查詢提取出來,加個別名。后面查詢語句可以直接用,對于大量復雜的SQL語句起到了很好的優化作用。

注意:

  • 相當于一個臨時表,但是不同于視圖,不會存儲起來,要與select配合使用。

  • 同一個select前可以有多個臨時表,寫一個with就可以,用逗號隔開,最后一個with語句不要用逗號。

  • with子句要用括號括起來。

總結一下with的用法,類似生成一個臨時的表。

推薦學習:mysql視頻教程

以上就是

? 版權聲明
THE END
喜歡就支持一下吧
點贊7 分享