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

Mysql中的自連接問(wèn)題

 更新時(shí)間:2023年05月31日 15:17:57   作者:華妃  
這篇文章主要介紹了Mysql中的自連接問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

Mysql自連接

1、在日常對(duì)數(shù)據(jù)庫(kù)的操作中,我們很熟悉使用INNER JOIN,LEFT JOIN 把一個(gè)表和另外一個(gè)表連接起來(lái),潛意識(shí)里會(huì)認(rèn)為只有兩個(gè)表才可以連接,有一個(gè)特殊情況,需要將表自身連接,這被稱為自連接。

2、想將表中行與同一表中的其他行組合時(shí),可以使用自連接。要執(zhí)行自聯(lián)接操作必須使用表別名來(lái)幫助MySQL在單個(gè)查詢中區(qū)分左表與同一張表的右表。

DEMO

1、比如組織機(jī)構(gòu)的樹(shù)形的,數(shù)據(jù)會(huì)有上下級(jí)區(qū)分,當(dāng)需要展示組織機(jī)構(gòu)的父級(jí)機(jī)構(gòu)名稱時(shí),我們可以使用自連接。

2、表結(jié)構(gòu)如圖所示:

3、sql

select a.id, a.party_org_name, a.parent_id,b.party_org_name as parent_name FROM sinosoft_party_org a left join sinosoft_party_org b on a.parent_id=b.id

MySQL自連接和內(nèi)連接和外連接_左外連接+右外連接

自連接:將一張表看作兩張表

練習(xí):查詢員工id,員工姓名及其管理者的id和姓名

select emp.employee_id,
?? ? ? emp.last_name,
?? ? ? mgr.employee_id,
?? ? ? mgr.last_name
from employees emp,employees mgr
where emp.manager_id = mgr.employee_id;

內(nèi)連接

只是把左表和右表滿足連接條件的數(shù)據(jù)查出來(lái),其它的數(shù)據(jù)都沒(méi)有要?。。?/p>

select employee_id,department_name
from employees e join departments d
on e.`department_id`=d.`department_id`

外連接

JOIN … ON

左外連接 left join…on

左外連接,左表和右表滿足條件的數(shù)據(jù),和左表中不滿足條件的數(shù)據(jù)?。?!

練習(xí):查詢所有員工的last_name,department_name信息

select last_name,department_name?
from employees e left join departments d
on e.`department_id`=d.`department_id`;

右外連接 right join … on

右外連接,右表和左表滿足條件的數(shù)據(jù),和右表中不滿足條件的數(shù)據(jù)?。?!

練習(xí):查詢所有員工的last_name,department_name信息

select last_name,department_name?
from departments d right join employees e
on e.`department_id`=d.`department_id`;

七種 SQL JOINS 的實(shí)現(xiàn)

UNION的使用

合并查詢結(jié)果

  • 利用UNION關(guān)鍵字,可以給出多條SELECT語(yǔ)句,并將它們的結(jié)果組合成單個(gè)結(jié)果集。
  • 合并時(shí),兩個(gè)表對(duì)應(yīng)的列數(shù)和數(shù)據(jù)類(lèi)型必須相同,并且相互對(duì)應(yīng)。
  • 各個(gè)SELECT語(yǔ)句之間使用UNION或UNION ALL關(guān)鍵字分隔。

UNION操作符

UNION 操作符返回兩個(gè)查詢的結(jié)果集的并集,去除重復(fù)記錄。

UNION ALL操作符

UNION ALL操作符返回兩個(gè)查詢的結(jié)果集的并集。對(duì)于兩個(gè)結(jié)果集的重復(fù)部分,不去重。

注意:執(zhí)行UNION ALL語(yǔ)句時(shí)所需要的資源比UNION語(yǔ)句少。

如果明確知道合并數(shù)據(jù)后的結(jié)果數(shù)據(jù)不存在重復(fù)數(shù)據(jù),或者不需要去除重復(fù)的數(shù)據(jù),則盡量使用UNION ALL語(yǔ)句,以提高數(shù)據(jù)查詢的效率。

1、內(nèi)連接(兩表只要滿足條件的)

SELECT employee_id,last_name,department_name
FROM employees e JOIN departments d
ON e.`department_id` = d.`department_id`;

2、左外連接(左和右滿足條件的,和左中不滿足條件的)

SELECT employee_id,last_name,department_name
FROM employees e LEFT JOIN departments d
ON e.`department_id` = d.`department_id`;

3、右外連接(右和左滿足條件的,和右中不滿足條件的)

SELECT employee_id,last_name,department_name
FROM employees e RIGHT JOIN departments d
ON e.`department_id` = d.`department_id`;

4、在左外連接的基礎(chǔ)上,右表取null值(滿足條件的肯定不是null,我們不?。?/strong>

SELECT employee_id,last_name,department_name
FROM employees e LEFT JOIN departments d
ON e.`department_id` = d.`department_id`
WHERE d.`department_id` IS NULL

5、在右外連接的基礎(chǔ)上,我們?nèi)∽蟊淼膎ull值

SELECT employee_id,last_name,department_name
FROM employees e RIGHT JOIN departments d
ON e.`department_id` = d.`department_id`
WHERE e.`department_id` IS NULL

6、右外連接取左表null值,和左外連接合并UNION ALL

SELECT employee_id,last_name,department_name
FROM employees e LEFT JOIN departments d
ON e.`department_id` = d.`department_id`
WHERE d.`department_id` IS NULL
UNION ALL #沒(méi)有去重操作,效率高
SELECT employee_id,last_name,department_name
FROM employees e RIGHT JOIN departments d
ON e.`department_id` = d.`department_id`;

7、

SELECT employee_id,last_name,department_name
FROM employees e LEFT JOIN departments d
ON e.`department_id` = d.`department_id`
WHERE d.`department_id` IS NULL
UNION ALL
SELECT employee_id,last_name,department_name
FROM employees e RIGHT JOIN departments d
ON e.`department_id` = d.`department_id`
WHERE e.`department_id` IS NULL

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • 在Windows系統(tǒng)上使用壓縮歸檔文件安裝MySQL的步驟

    在Windows系統(tǒng)上使用壓縮歸檔文件安裝MySQL的步驟

    這篇文章主要介紹了在Windows系統(tǒng)上使用壓縮歸檔文件安裝MySQL的步驟,非常不錯(cuò),具有一定的參考借鑒加載,需要的朋友可以參考下
    2018-06-06
  • mysql排序失效問(wèn)題的解決

    mysql排序失效問(wèn)題的解決

    本文主要介紹了mysql排序失效問(wèn)題的解決,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-05-05
  • mysql 刪除字段的實(shí)現(xiàn)示例

    mysql 刪除字段的實(shí)現(xiàn)示例

    MySQL中要?jiǎng)h除表中的字段,可以使用語(yǔ)句中的DROP COLUMN子句,本文就來(lái)詳細(xì)的介紹一下mysql 刪除字段的實(shí)現(xiàn)示例,感興趣的可以了解一下
    2025-12-12
  • mysql group_concat 實(shí)現(xiàn)把分組字段寫(xiě)成一行的方法示例

    mysql group_concat 實(shí)現(xiàn)把分組字段寫(xiě)成一行的方法示例

    這篇文章主要介紹了mysql group_concat實(shí)現(xiàn)把分組字段寫(xiě)成一行的方法,結(jié)合實(shí)例形式分析了group_concat函數(shù)的功能、查詢用法及相關(guān)操作技巧,需要的朋友可以參考下
    2019-10-10
  • MySQL 視圖(View)原理解析

    MySQL 視圖(View)原理解析

    本篇重點(diǎn)講述視圖是如何實(shí)現(xiàn)的,以及視圖如何和查詢優(yōu)化器交互,從而我們可以根據(jù)這些知識(shí)了解如何通過(guò)視圖提高性能。
    2021-05-05
  • MySQL中因字段字符集不同導(dǎo)致索引不能命中的解決方法

    MySQL中因字段字符集不同導(dǎo)致索引不能命中的解決方法

    這篇文章主要給大家介紹了關(guān)于MySQL中因字段字符集不同導(dǎo)致索引不能命中的解決方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2018-09-09
  • 淺談mysql join底層原理

    淺談mysql join底層原理

    本文文章主要介紹了淺談mysql join底層原理,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-08-08
  • 一文帶你了解MySQL字符集和比較規(guī)則

    一文帶你了解MySQL字符集和比較規(guī)則

    前段時(shí)間往MySQL中存入emoji表情或生僻字、繁體字時(shí),報(bào)錯(cuò)無(wú)法添加,研究后發(fā)現(xiàn)這是字符集編碼的問(wèn)題,下面這篇文章主要給大家介紹了關(guān)于MySQL字符集和比較規(guī)則的相關(guān)資料,需要的朋友可以參考下
    2022-12-12
  • mysql5.6.zip格式壓縮版安裝圖文教程

    mysql5.6.zip格式壓縮版安裝圖文教程

    這篇文章主要為大家詳細(xì)介紹了mysql5.6.zip格式壓縮版安裝圖文教程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-12-12

最新評(píng)論

蒲城县| 册亨县| 兴海县| 甘南县| 醴陵市| 甘南县| 禄劝| 东明县| 扶沟县| 安达市| 三原县| 桑日县| 平邑县| 东乡族自治县| 喀什市| 海盐县| 井冈山市| 临朐县| 汝南县| 鹿邑县| 凤冈县| 女性| 桓台县| 安宁市| 米脂县| 论坛| 农安县| 乌兰浩特市| 鸡西市| 齐齐哈尔市| 当涂县| 龙海市| 玉屏| 剑阁县| 阿拉善左旗| 罗山县| 乌拉特后旗| 金昌市| 镇康县| 肥城市| 垫江县|