最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

MySQL?衍生表(Derived?Tables)的使用

 更新時(shí)間:2025年06月11日 11:45:39   作者:V1ncent-CC  
本文主要介紹了MySQL?衍生表(Derived?Tables)的使用,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧方法

在SQL的查詢語句select …. from …中,跟在from子句后面的通常是一張擁有定義的實(shí)體表,而有的時(shí)候我們會(huì)用子查詢來扮演實(shí)體表的角色,這個(gè)在from子句中的子查詢會(huì)返回一個(gè)結(jié)果集,這個(gè)結(jié)果集可以像普通的實(shí)體表一樣查詢、連接,這個(gè)子查詢的結(jié)果集就叫做衍生表。

一、衍生表簡(jiǎn)介

衍生表常用在需要對(duì)數(shù)據(jù)進(jìn)行臨時(shí)處理的場(chǎng)景,即對(duì)表直接查詢無法得出結(jié)果,需要對(duì)數(shù)據(jù)進(jìn)行加工,然后在加工基礎(chǔ)上與原數(shù)據(jù)再次進(jìn)行連接,才能得出結(jié)果。

示例數(shù)據(jù)準(zhǔn)備
例如下面一的張考試成績(jī)表,subject_id代表不同的科目,score代表分?jǐn)?shù):

create table exam(
id int not null auto_increment primary key,
subject_id int,
student varchar(12),
score int);

insert into exam values(null,1,'小紅',89), (null,1,'小橙',76), (null,1,'小黃',89),
 (null,1,'小綠',95), (null,2,'小青',77), (null,2,'小藍(lán)',83), (null,2,'小紫',99);

select * from exam;

在這里插入圖片描述

1.1 衍生表基本用法

現(xiàn)要求:找出每個(gè)科目得分最高那條記錄,這個(gè)問題需要拆分成2步完成:

第一步:找出每個(gè)科目的最高分

select subject_id, max(score) score from exam group by subject_id;

在這里插入圖片描述

第二步:將上一步的結(jié)果與exam表進(jìn)行連接,找出具體的記錄:

select e.* from exam e, (select subject_id, max(score) score from exam group by subject_id) d 
where d.subject_id=e.subject_id and d.score=e.score;

在這里插入圖片描述

  • 這里將第一步的查詢放在括號(hào)中,并取一個(gè)別名d。
  • 通過別名d,MySQL可以像引用實(shí)體表一樣引用子查詢的結(jié)果集(衍生表)。

1.2 自定義列名

在給衍生表定義別名時(shí),可以同時(shí)定義列名,方法是在別名后的括號(hào)內(nèi)列出列名,要注意列名的數(shù)量要和子查詢返回的列數(shù)量相同:

select a, b, d from (select 1,2,3,4) d(a,b,c,d);

在這里插入圖片描述

1.3 衍生表的局限

衍生表目前的局限是它是一個(gè)獨(dú)立的子查詢,在生成結(jié)果集之前無法和from表中的其他表產(chǎn)生關(guān)聯(lián),如果產(chǎn)生衍生表的子查詢成本非常高,而最后與其他表連接后只使用了一小部分?jǐn)?shù)據(jù),那么這個(gè)性能浪費(fèi)是非常嚴(yán)重的。

例如上面的例子中,如果表中有10萬個(gè)科目,而我最終結(jié)果只涉及2個(gè)科目,那么在衍生表中對(duì)10萬個(gè)科目進(jìn)行g(shù)roup by顯然是沒有必要的,這種情況我們需要提前將外層謂語條件(where)傳入衍生表中,避免處理不必要的數(shù)據(jù),但這也意味著謂語條件在外層寫了一遍,必須在衍生表中再寫一遍,增加了SQL復(fù)雜度。

在MySQL 8.0.14版本后,通過橫向衍生表(lateral關(guān)鍵字),可以在衍生表中引用from子句中之前出現(xiàn)的表,可以完美解決上述局限。
MySQL 橫向衍生表(Lateral Derived Tables)

到此這篇關(guān)于MySQL 衍生表(Derived Tables)的使用的文章就介紹到這了,更多相關(guān)MySQL 衍生表內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • MySQL中文亂碼問題解決方案

    MySQL中文亂碼問題解決方案

    這篇文章主要介紹了MySQL中文亂碼問題解決方案,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-09-09
  • MySQL表的創(chuàng)建及字段介紹(小白入門篇)

    MySQL表的創(chuàng)建及字段介紹(小白入門篇)

    這篇文章主要為大家介紹了MySQL表的創(chuàng)建及字段介紹(小白入門篇),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-05-05
  • 解讀mysql中的null問題

    解讀mysql中的null問題

    這篇文章主要介紹了解讀mysql中的null問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-09-09
  • Mysql嚴(yán)格模式小結(jié)

    Mysql嚴(yán)格模式小結(jié)

    本文主要介紹了Mysql嚴(yán)格模式,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2026-03-03
  • ubuntu mysql 5.6版本的刪除/安裝/編碼配置文件配置

    ubuntu mysql 5.6版本的刪除/安裝/編碼配置文件配置

    這篇文章主要介紹了ubuntu mysql 5.6版本的刪除,安裝,編碼配置文件配置,需要的朋友可以參考下
    2017-06-06
  • Mysql優(yōu)化技巧之Limit查詢的優(yōu)化分析

    Mysql優(yōu)化技巧之Limit查詢的優(yōu)化分析

    這篇文章主要給大家介紹了關(guān)于Mysql優(yōu)化技巧之Limit查詢的優(yōu)化分析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用Mysql具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-07-07
  • Linux中查看MySQL服務(wù)是否開啟方式

    Linux中查看MySQL服務(wù)是否開啟方式

    這篇文章主要介紹了Linux中查看MySQL服務(wù)是否開啟方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-09-09
  • MYSQL無法啟動(dòng)提示: Default storage engine (InnoDB) is not available的解決方法

    MYSQL無法啟動(dòng)提示: Default storage engine (InnoDB) is not availabl

    自己用的MYSQL都是用MYISAM數(shù)據(jù)庫,還沒涉及到需要INNODB,因此打算直接不加載INNODB引擎。
    2011-05-05
  • Mysql索引結(jié)合explain分析示例

    Mysql索引結(jié)合explain分析示例

    本文主要介紹了Mysql索引結(jié)合explain分析示例,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-02-02
  • MySQL 不允許從遠(yuǎn)程訪問的解決方法

    MySQL 不允許從遠(yuǎn)程訪問的解決方法

    MySQL 不允許從遠(yuǎn)程訪問的原因有很多除了下面的方法,還有需要看服務(wù)器安全設(shè)置禁止訪問本機(jī)的3306端口。
    2010-03-03

最新評(píng)論

兴国县| 桦川县| 黄浦区| 峡江县| 彭水| 兰西县| 巧家县| 扬中市| 绥宁县| 白银市| 沈丘县| 海原县| 仙居县| 宝丰县| 敦煌市| 祁门县| 固始县| 屏山县| 榕江县| 册亨县| 兴业县| 蒙自县| 怀集县| 九寨沟县| 汉阴县| 广灵县| 新闻| 松江区| 哈巴河县| 本溪市| 荃湾区| 浦北县| 阿城市| 鄂伦春自治旗| 阳东县| 赤峰市| 富宁县| 睢宁县| 武定县| 卓资县| 漯河市|