合併相同資料的行 一看就懂MySQL繁瑣的合併表

2021-10-15 00:06:45 字數 2655 閱讀 1609

表的合併,在sql裡又叫做表的連線。

多表查詢:

指的是將兩個以上的資料表通過關鍵字段連線在一起,從不同表中取不同字段進行查詢的方法。

關鍵字段:

1、相連的兩表中都有能匹配上的關鍵字段;

2、表中的關鍵字段最好是主鍵,即:不重複,不為空值;

3、如果不是主鍵就需要用到聯合主鍵,即兩表中兩個字段聯合起來作關鍵字段。

一、內連線查詢

內連線:inner join 簡寫 join,按照內連線合併兩個表,返回兩個表中主鍵相同的行。

通用**:

select from a inner join b ona.key = b.key;
將上面的表1和表2進行內連線

#內連線

select 資訊表.*,成績表.*

from 資訊表

inner join 成績表

on 資訊表.`學號`=資訊表.`學號`;

一對一連線:只要找到關鍵字段(學號)相同的資料,橫向連線起來就可以;

多對多連線:連線關鍵字段(學號)相同的資料的,但是由於相同學號的資料多於1個,所以最終結果是表相同字段分別和右表的資料相連線。

二、左連線

左連線: 結果中包括左表的所有行,及關鍵字段與左表相同的右表的行。

通用**:

select from a left join b ona.key = b.key;
將資訊表和成績表進行左連線

#左連線

select 資訊表.*,成績表.*

from 資訊表

left join 成績表

on 資訊表.`學號`=資訊表.`學號`;

一對一連線

多對多連線

左連線:學號與左表一致,而不包含右表學號為f的學員

三、右連線

右連線: 結果中除了包括與右表關鍵字段的左表行,還包括右表的所有行

通用**:

select from a right join b ona.key = b.key;
將資訊表和成績表進行右連線

#右連線

select 資訊表.*,成績表.*

from 資訊表

right join 成績表

on 資訊表.`學號`=資訊表.`學號`;

一對一連線

多對多連線

四、縱向連線

兩個表縱向連線的條件:兩個表必須列數相同;

去重縱向連線

union: 用於合併兩個或多個 select 語句的結果集,並消去表中任何重複行。

通用**: 用union合併t1與t2表

select t1.*  from t1 

union

select t2.* from t2;

將兩個資訊表去重縱向連線

select *from 資訊表1

union

select *from 資訊表2;

不去重縱向連線

union all:用於合併兩個或多個 select 語句的結果集,保留重複行。

通用**:用union all合併t1與t2表

select t1.*  from t1 

union all

select t2.* from t2;

將兩個資訊表不去重縱向連線

select *from 資訊表1

union all

select *from 資訊表2;

一看就懂的SwitchHosts

switchhosts 是乙個管理 切換多個 hosts 方案的工具。它是乙個免費開源軟體。日常開發工作中,我們可能經常需要切換各種 hosts 繫結,比如在本地開發時可能需要乙個開發環境的 hosts 繫結方案,發布到測試環境後又有乙個測試環境的 hosts 繫結方案,然後可能還有乙個預發布環境,...

一看就懂TCP 連線

我們先來看乙個定義。這樣理解比較抽象。我們換個角度。它的本質還是傳輸控制。如果讓我們自己設計這個傳輸,我們會怎麼想呢。tcp 協議它會先建立連線。三次握手目的是保證雙方都有傳送和接收的能力 首要原因是為了防止舊的重複連線初始化造成混亂。同步雙方初始序列號客戶端和服務端都處於 closed 狀態。先是...

資訊熵 一看就懂

先給出資訊熵的公式 首先了解一下資訊量 資訊量是對資訊的度量,就跟時間的度量是秒一樣,當我們考慮乙個離散的隨機變數 x 的時候,當我們觀察到的這個變數的乙個具體值的時候,我們接收到了多少資訊呢?多少資訊用資訊量來衡量,我們接受到的資訊量跟具體發生的事件有關。資訊的大小跟隨機事件的概率有關。越小概率的...