Mysql中通用表達(dá)式WITH?AS語句的使用實(shí)例代碼
一、WITH AS 的含義
使用with as 可以讓子查詢重用相同的with查詢塊,并在select查詢塊中直接引用,一般用在select查詢塊會(huì)多次使用某個(gè)查詢sql時(shí),會(huì)把這個(gè)sql語句放在with as 中,作為公用的表達(dá)式,通過別名的方式在主查詢語句中重復(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。
使用語法:
WITH
(SELECT語句) AS 別名1,
(SELECT語句) AS 別名2,
...
SELECT * FROM 別名1,別名2 WHERE 別名1.id = 別名2.id;
說明:下面這個(gè)SELECT * FROM 別名1,別名2 WHERE 別名1.id = 別名2.id;是主查詢語句,可以調(diào)用上面定義好的select公用表達(dá)式
,需要注意的是主語句不僅僅局限于查詢語句,也可以是更新或者刪除和插入語句。
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語句所用到,簡(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)的語句
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語句使用的文章就介紹到這了,更多相關(guān)Mysql通用表達(dá)式WITH AS語句內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
MySQL實(shí)戰(zhàn)窗口函數(shù)SQL分析班級(jí)學(xué)生考試成績(jī)及生活消費(fèi)
這篇文章主要為大家介紹了MySQL實(shí)戰(zhàn),利用窗口函數(shù)SQL來分析班級(jí)學(xué)生的考試成績(jī)及生活消費(fèi)的示例過程,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步2021-10-10
使用MySQL的yum源安裝MySQL5.7數(shù)據(jù)庫的方法
這篇文章主要介紹了使用MySQL的yum源安裝MySQL5.7數(shù)據(jù)庫的方法的相關(guān)資料,需要的朋友可以參考下2016-08-08
php開啟mysqli擴(kuò)展之后如何連接數(shù)據(jù)庫
Mysqli是php5之后才有的功能,沒有開啟擴(kuò)展的朋友可以打開您的php.ini的配置文件;相對(duì)于mysql有很多新的特性和優(yōu)勢(shì),需要了解的朋友可以參考下2012-12-12
mybatis-plus分頁傳入?yún)?shù)后sql where條件沒有l(wèi)imit分頁信息操作
這篇文章主要介紹了mybatis-plus分頁傳入?yún)?shù)后sql where條件沒有l(wèi)imit分頁信息操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-11-11
解決MySQL主從數(shù)據(jù)庫沒有同步的兩種方法
這篇文章主要介紹了解決MySQL主從數(shù)據(jù)庫沒有同步的兩種方法,需要的朋友可以參考下面文章內(nèi)容2021-09-09
基于Mysql+JavaSwing的超市商品管理系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)
本項(xiàng)目是使用Java swing開發(fā),可實(shí)現(xiàn)超市管理系統(tǒng)商品列表信息查詢、添加商品信息和修改商品管理以及刪除商品信息和安裝商品信息查詢等功能。界面設(shè)計(jì)和功能比較簡(jiǎn)單基礎(chǔ)、適合作為Java課設(shè)設(shè)計(jì)以及學(xué)習(xí)技術(shù)使用,需要的朋友可以參考一下2021-09-09
navicat連接mysql修改root密碼最簡(jiǎn)潔方法
這篇文章主要介紹了navicat連接mysql修改root密碼,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-05-05
Mysql中文漢字轉(zhuǎn)拼音的實(shí)現(xiàn)(每個(gè)漢字轉(zhuǎn)換全拼)
這篇文章主要介紹了Mysql中文漢字轉(zhuǎn)拼音的實(shí)現(xiàn),并且每個(gè)漢字會(huì)轉(zhuǎn)換全拼,使用Mysql自定義函數(shù)實(shí)現(xiàn),需要的朋友可以參考下2014-06-06

