MySQL的聯合查詢深入分析及案例

2021-08-10 18:26:51 字數 1941 閱讀 4044

聯合查詢

1:概述

將多次查詢(多條select語句),在記錄上進行拼接(欄位是不會增加的),只要求字段一樣,與資料型別無關

union:聯合的意思,即把兩次或多次查詢結果合併起來。

要求:兩次查詢的列數必須一致

推薦:列的型別可以不一樣,但推薦查詢的每一列,想對應的型別以一樣

可以來自多張表的資料:多次sql語句取出的列名可以不一致,此時以第乙個sql語句的列名為準。

如果不同的語句中取出的行,有完全相同(這裡表示的是每個列的值都相同),那麼union會將相同的行合併,最終只保留一行。也可以這樣理解,union會去掉重複的行。

如果不想去掉重複的行,可以使用union all。

2:基本語法(預設去重)

多條select語句構成:每一條select語句獲取的字段必須嚴格一致,但是字段型別無關

select 語句1

union(union 選項)

union 選項 與select選項一樣有兩個

all: 保留所有(不管重複),單條select,一張表是允許重複的

distinct 去重(大量表合併在一起,去除重複的)

3:案例演示

1:單張表查詢

2:聯合查詢(預設是去重的)

3:聯合查詢(不去重all)

4:聯合查詢(只要求字段,不管資料型別)

查詢出來的資料沒有意義

4:聯合查詢的意義(資料過長百億級別)

1:查詢同一張表,但是需求不同: 如查詢男生公升序,女生身高降序.

2:多表查詢:多張表的結構是完全一樣的,儲存的資料(結構)也是一樣的.

5:聯合查詢(小案例:男生公升序,女生降序)

1:在聯合查詢中:order by不能直接使用,需要對查詢語句使用括號括起來

2:若要order by 生效,必須搭配limit(使用限定最大數值即可)

3:sql語句

查詢學生表,男生年齡公升序,女生年齡降序

(select * from t_student where gender='男' order by age asc limit 99999)

union

(select * from t_student where gender='女' order by age desc limit 99999);

new的深入分析

new 是c 的乙個關鍵字,同時也是操作符。關於new的話題非常多,因為它確實比較複雜,也非常神秘,下面我將把我了解到的與new有關的內容做乙個總結。new的過程 當我們使用關鍵字new在堆上動態建立乙個物件時,它實際上做了三件事 獲得一塊記憶體空間 呼叫建構函式 返回正確的指標。當然,如果我們建立...

MySQL 深入分析MySQL索引機制的實現

資料庫是乙個只要從事後端開發,就永遠離不開的技術,大部分企業選擇的資料庫都是mysql,所以需要我們對mysql有著足夠的了解。而mysql索引,我們都知道提高效能要加索引,也知道索引的結構是b tree,也都可以說出幾條加索引的原則,但再深入一點,往往就會詞窮,這可能就是知其然而不知其所以然的結果...

Mysql的游標的定義使用及關閉深入分析

mysql從5.0開始支援儲存過程和trigger,給我們喜歡用mysql的朋友們更喜歡mysql的理由了,語法上和pl sql有差別,不過搞過程式設計的人都知道,語法不是問題,關鍵是思想,大致了解語法後,就從變數定義,迴圈,判斷,游標,異常處理這個幾個方面詳細學習了。關於游標的用法mysql現在提...