Mysql中通用表達(dá)式WITH?AS語(yǔ)句的使用實(shí)例代碼
一、WITH AS 的含義
使用with as 可以讓子查詢重用相同的with查詢塊,并在select查詢塊中直接引用,一般用在select查詢塊會(huì)多次使用某個(gè)查詢sql時(shí),會(huì)把這個(gè)sql語(yǔ)句放在with as 中,作為公用的表達(dá)式,通過別名的方式在主查詢語(yǔ)句中重復(fù)使用。
二、WITH AS 的含使用
現(xiàn)有兩張表cust_info_detail(客戶信息表,表中三個(gè)字段,id、name、sex)、order_info_detail(訂單詳情表,表中3個(gè)字段,order_id、order_time、cid,其中cid關(guān)聯(lián)客戶信息表中的id),現(xiàn)在要統(tǒng)計(jì)某天(作為查詢?nèi)雲(yún)ⅲ┲忻總€(gè)用戶下單的數(shù)量以及客戶的相關(guān)信息,如果用戶當(dāng)天沒有下單,顯示下單數(shù)為0。
使用語(yǔ)法:
WITH
(SELECT語(yǔ)句) AS 別名1,
(SELECT語(yǔ)句) AS 別名2,
...
SELECT * FROM 別名1,別名2 WHERE 別名1.id = 別名2.id;
說明:下面這個(gè)SELECT * FROM 別名1,別名2 WHERE 別名1.id = 別名2.id;是主查詢語(yǔ)句,可以調(diào)用上面定義好的select公用表達(dá)式
,需要注意的是主語(yǔ)句不僅僅局限于查詢語(yǔ)句,也可以是更新或者刪除和插入語(yǔ)句。
WITH (SELECT id,name FROM cust_info_detail GROUP BY id) AS cust_info, (SELECT cid, COUNT(order_id) as num FROM order_info_detail WHERE order_time = $datadt$ GROUP BY cid) AS order_num SELECT t.name AS '客戶姓名' ,t.sex AS '客戶性別' ,IF(t1.num IS NULL, 0, t1.num) AS '客戶下單數(shù)' FROM cust_info t LEFT JOIN order_num t1 ON t.id = t1.cid
三、WITH AS 的作用
1.定義一個(gè)sql片斷,該sql片斷會(huì)被整個(gè)sql語(yǔ)句所用到,簡(jiǎn)化sql,提高可讀性
2.with子查詢只執(zhí)行一次,將結(jié)果存儲(chǔ)在用戶臨時(shí)表空間中,可以引用多次,增強(qiáng)性能
補(bǔ)充:使用with as應(yīng)該注意
1 with as后面必須緊跟使用CTE(Common table Express--公用表) (with as)的語(yǔ)句
with ?a as ( select * from tb1 ) select * from tb2,a where a.id=tb1.id(就是這個(gè))
2 多個(gè)CTE 之間加,分割
with t1 as ( select * from t1 ),(第一個(gè)CTE) t2 as ( select * from t2 ),(第二個(gè)CTE) t3 as ( select * from t3 )(第三個(gè)CTE)
總結(jié)
到此這篇關(guān)于Mysql中通用表達(dá)式WITH AS語(yǔ)句使用的文章就介紹到這了,更多相關(guān)Mysql通用表達(dá)式WITH AS語(yǔ)句內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
MySQL8.0實(shí)現(xiàn)窗口函數(shù)計(jì)算同比環(huán)比
本文主要介紹了MySQL8.0實(shí)現(xiàn)窗口函數(shù)計(jì)算同比環(huán)比,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-06-06Mysql 5.7.19 winx64 ZIP Archive 安裝及使用過程問題小結(jié)
本篇文章給大家介紹了mysql 5.7.19 winx64 ZIP Archive 安裝及使用過程問題小結(jié),需要的朋友可以參考下2017-07-07mysql 數(shù)據(jù)庫(kù)設(shè)計(jì)
大家都知道m(xù)ysql的myisam表適合讀操作大,寫操作少;表級(jí)鎖表2009-06-06在MySQL中使用GTIDs復(fù)制協(xié)議和中斷協(xié)議的教程
這篇文章主要介紹了在MySQL中使用GTIDs復(fù)制協(xié)議和中斷協(xié)議的教程,主要用于多個(gè)服務(wù)器之間的通信,需要的朋友可以參考下2015-04-04詳解sql中的參照完整性(一對(duì)一,一對(duì)多,多對(duì)多)
這篇文章主要介紹了sql中的參照完整性,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-04-04MySQL實(shí)現(xiàn)統(tǒng)計(jì)過去12個(gè)月每個(gè)月的數(shù)據(jù)信息
這篇文章主要介紹了MySQL實(shí)現(xiàn)統(tǒng)計(jì)過去12個(gè)月每個(gè)月的數(shù)據(jù)信息,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-12-12