MySQL聯結查詢

2023-01-22 12:16:29 字數 1121 閱讀 4576

sql中,聯結主要分為6種型別:

1.內聯結

將兩張表的公共的資料顯示出來,即顯示兩張表的交集:

select

from a inner

join b on a.key

= b.key;

2.左外聯結

將兩張表中,只存在於左表中而不存在於右表中的資料篩選出來:

select

from a left

join b on a.key

= b.key

where b.key

isnull;

如果不加後面的where子句,會將兩張表的共同部分也顯示出來。

3.右外聯結

將兩張表中,只存在於右表中而不存在於左表中的資料篩選出來:

select

from a right

join b on a.key

= b.key

where a.key

isnull;

如果不加後面的where子句,會將兩張表的共同部分也顯示出來。

4.全聯結

將兩張表中所有記錄都顯示出來,即獲取兩張表的並集。但是mysql中並不支援全聯結操作,需要人為將左外聯結和右外聯結合並:

select

from a left

join b on a.key

= b.key

union

allselect

from a right

join b on a.key

= b.key; 這裡union all允許重複資料的存在,如果需要去重則使用union

5.交叉聯結

又稱笛卡爾積聯結,返回左表乘以右表的所有條目:

select

from a cross

join b;

6.自聯結

對同一張表進行聯結操作:

select p1.id, p1.name from products as p1, products as p2 where p1.vend_id = p2.vend_id and p2.id =

10;

mysql 聯結 子查詢

在可以指定一個表名的任何地方,都可以一個括號括起來的join子句替換 1.自然聯結 inner join 預設聯結 left outer join 左表可以為null right outer join 右表可以為null full outner join 左表和右表都可以為null 2.cross ...

MySQL的聯結查詢

聯結,可以用來在一條 select 語句中關聯表。在聯結兩個表時,實際上做的是將第一個表中的每一行與第二個表中的每一行進行配對。行的數目其實是第一個表中的行數和第二個表中行數的乘積。而使用 where 子句作為過濾條件,只包含那些匹配聯結條件的行。等值聯結,基於兩個表之間的相等測試,也要內部聯結。s...

MySQL聯結查詢和子查詢

2018 2 24 16 18 12 星期六 今天需要統計一個運營活動的資料,涉及三個表,分組比較多 活動描述 每個人可以領取多張卡片,好友也可以贈送其卡片,20或40張卡片可以兌換一個獎品 要求統計出 1.每個使用者的個人資訊,2.領取的卡總數,3.自己領的卡的數目,4.好友送的卡的數目,5.兌換...