亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

MySQL多表查詢與7種JOINS的實(shí)現(xiàn)舉例

瀏覽:164日期:2023-02-18 16:43:18
目錄
  • 前言
  • 1.案例多表連接
    • 笛卡爾積(或交叉連接)
  • 2. 多表查詢分類講解
    • 角度1:等值連接與非等值連接
    • 角度2:自連接與非自連接
    • 角度3:內(nèi)連接與外連接
  • 3. SQL99語(yǔ)法實(shí)現(xiàn)多表查詢
    • 內(nèi)連接(INNER JOIN)的實(shí)現(xiàn)
    • 外連接(OUTER JOIN)的實(shí)現(xiàn)
  • 4. UNION的使用
    • 合并查詢結(jié)果
    • UNION操作符
    • UNION ALL操作符
  • 5. 7種SQL JOINS的實(shí)現(xiàn)
    • 6.SQL99語(yǔ)法新特性
      • 自然連接
      • USING連接
    • 附錄:常用的 SQL 標(biāo)準(zhǔn)有哪些
      • 練習(xí)題
        • 總結(jié)

          前言

          多表查詢,也稱為關(guān)聯(lián)查詢,指兩個(gè)或更多個(gè)表一起完成查詢操作。

          前提條件:這些一起查詢的表之間是有關(guān)系的(一對(duì)一、一對(duì)多),它們之間一定是有關(guān)聯(lián)字段,這個(gè)關(guān)聯(lián)字段可能建立了外鍵,也可能沒(méi)有建立外鍵。比如:?jiǎn)T工表和部門表,這兩個(gè)表依靠“部門編號(hào)”進(jìn)行關(guān)聯(lián)。

          1.案例多表連接

          案例說(shuō)明

          從多個(gè)表中獲取數(shù)據(jù):

          # 錯(cuò)誤的實(shí)現(xiàn)方式:每個(gè)員工都與每個(gè)部門匹配了一遍。SELECT employee_id,department_nameFROM employees,departments;  # 查詢出2889條記錄

          分析錯(cuò)誤情況:

          SELECT COUNT(employee_id) FROM employees;#輸出107行SELECT COUNT(department_id)FROM departments;# 輸出27行SELECT 107*27 FROM dual;

          因此把多表查詢中出現(xiàn)的問(wèn)題稱為:笛卡爾積的錯(cuò)誤。

          笛卡爾積(或交叉連接)

          笛卡爾乘積是一個(gè)數(shù)學(xué)運(yùn)算。假設(shè)我有兩個(gè)集合 X 和 Y,那么 X 和 Y 的笛卡爾積就是 X 和 Y 的所有可能組合,也就是第一個(gè)對(duì)象來(lái)自于 X,第二個(gè)對(duì)象來(lái)自于 Y 的所有可能。組合的個(gè)數(shù)即為兩個(gè)集合中元素個(gè)數(shù)的乘積數(shù)。

          SQL92中,笛卡爾積也稱為交叉連接,英文是 CROSS JOIN 。在 SQL99 中也是使用 CROSS JOIN表示交叉連接。它的作用就是可以把任意表進(jìn)行連接,即使這兩張表不相關(guān)。

          因此上面的代碼可以等價(jià)于:

          # 錯(cuò)誤的方式SELECT employee_id,department_nameFROM employees CROSS JOIN departments;# 查詢出2889條記錄

          笛卡爾積的錯(cuò)誤會(huì)在下面條件下產(chǎn)生:

          • 省略多個(gè)表的連接條件(或關(guān)聯(lián)條件)
          • 連接條件(或關(guān)聯(lián)條件)無(wú)效
          • 所有表中的所有行互相連接

          為了避免笛卡爾積, 可以在 WHERE 加入有效的連接條件。加入連接條件后,查詢語(yǔ)法:

          # 在表中有相同列時(shí),在列名之前加上表名前綴。SELECT last_name, department_name, departments.department_id;FROM employees, departments# 連接條件WHERE employees.department_id = departments.department_id;

          注意:在表中有相同列時(shí),在列名之前加上表名前綴。

          建議:從sql優(yōu)化的角度,建議多表查詢時(shí),每個(gè)字段前都指明其所在的表。

          此外,方便起見(jiàn),表名也可以用別名代替。但是如果給表起了別名,一旦在SELECT或WHERE中使用表名的話,則必須使用表的別名,而不能再使用表的原名

          多個(gè)連接條件的拼接需要使用 AND 關(guān)鍵字。例如:

          SELECT e.employee_id,e.last_name,d.department_name,l.city,e.department_id,l.location_idFROM employees e, departments d, locations lWHERE e.`department_id` = d.`department_id`AND d.`location_id` = l.`location_id`;

          如果有 n 個(gè)表實(shí)現(xiàn)多表的查詢,則需要至少 n-1 個(gè)連接條件。

          2. 多表查詢分類講解

          角度1:等值連接與非等值連接

          這里涉及 job_grades 表,通過(guò)查詢可知,每個(gè)薪水都有其相應(yīng)的等級(jí)區(qū)間。

          SELECT *FROM job_grades;

          這里通過(guò)員工表與其相應(yīng)的區(qū)間等級(jí)做一個(gè)匹配:

          SELECT e.last_name,e.salary,j.grade_levelFROM employees e,job_grades jWHERE e.`salary` between j.`lowest_sal` and j.`highest_sal`;# WHERE e.`salary` >= j.`lowest_sal` AND e.`salary` <= j.`highest_sal`;

          角度2:自連接與非自連接

          當(dāng)table1和table2本質(zhì)上是同一張表,只是用取別名的方式虛擬成兩張表以代表不同的意義。然后兩個(gè)表再進(jìn)行內(nèi)連接,外連接等查詢。

          連接的條件是WORKER表中的MANAGER_ID和MANAGER表中的EMPLOYEE_ID相等。

          題目:查詢employees表,返回“Xxx works for Xxx”

          SELECT CONCAT(worker.last_name ," works for ", manager.last_name)FROM employees worker, employees managerWHERE worker.manager_id = manager.employee_id ;
          • CONCAT的作用是連接字符串。

          角度3:內(nèi)連接與外連接

          內(nèi)連接: 合并具有同一列的兩個(gè)以上的表的行, 結(jié)果集中不包含一個(gè)表與另一個(gè)表不匹配的行

          外連接: 兩個(gè)表在連接過(guò)程中除了返回滿足連接條件的行以外還返回左(或右)表中不滿足條件的行 ,這種連接稱為左(或右) 外連接。沒(méi)有匹配的行時(shí), 結(jié)果表中相應(yīng)的列為空(NULL)。

          如果是左外連接,則連接條件中左邊的表也稱為主表,右邊的表稱為從表。

          如果是右外連接,則連接條件中右邊的表也稱為主表,左邊的表稱為從表。

          SQL92:使用(+)創(chuàng)建連接

          在 SQL92 中采用(+)代表從表所在的位置。即左或右外連接中,(+) 表示哪個(gè)是從表。

          但是Oracle 對(duì) SQL92 支持,而 MySQL 則不支持 SQL92 的外連接。

          # 左外連接SELECT last_name,department_nameFROM employees ,departmentsWHERE employees.department_id = departments.department_id(+);# 右外連接SELECT last_name,department_nameFROM employees ,departmentsWHERE employees.department_id(+) = departments.department_id;
          • 在 SQL92 中,只有左外連接和右外連接,沒(méi)有滿(或全)外連接。

          3. SQL99語(yǔ)法實(shí)現(xiàn)多表查詢

          SQL99語(yǔ)法中使用 JOIN …ON 的方式實(shí)現(xiàn)多表的查詢。這種方式也能解決外連接的問(wèn)題。

          MySQL是支持此種方式的。

          • 可以使用 ON 子句指定額外的連接條件。
          • 這個(gè)連接條件是與其它條件分開(kāi)的。
          • 關(guān)鍵字 JOIN、INNER JOIN、CROSS JOIN 的含義是一樣的,都表示內(nèi)連接

          內(nèi)連接(INNER JOIN)的實(shí)現(xiàn)

          SELECT 字段列表
          FROM A表 INNER JOIN B表
          ON 關(guān)聯(lián)條件
          WHERE 等其他子句;

          外連接(OUTER JOIN)的實(shí)現(xiàn)

          左外連接(LEFT OUTER JOIN)

          語(yǔ)法:

          SELECT e.last_name, e.department_id, d.department_nameFROM employees e LEFT OUTER JOIN departments dON (e.department_id = d.department_id) ;

          右外連接(RIGHT OUTER JOIN)

          語(yǔ)法:

          SELECT e.last_name, e.department_id, d.department_nameFROM employees e RIGHT OUTER JOIN departments dON (e.department_id = d.department_id) ;

          滿外連接(FULL OUTER JOIN)

          滿外連接的結(jié)果 = 左右表匹配的數(shù)據(jù) + 左表沒(méi)有匹配到的數(shù)據(jù) + 右表沒(méi)有匹配到的數(shù)據(jù)。

          • SQL99是支持滿外連接的。使用FULL JOIN 或 FULL OUTER JOIN來(lái)實(shí)現(xiàn)。
          • 但是MySQL不支持FULL JOIN,但是可以用 LEFT JOIN UNION RIGHT JOIN代替。

          4. UNION的使用

          合并查詢結(jié)果

          利用UNION關(guān)鍵字,可以給出多條SELECT語(yǔ)句,并將它們的結(jié)果組合成單個(gè)結(jié)果集。

          • 合并時(shí),兩個(gè)表對(duì)應(yīng)的列數(shù)和數(shù)據(jù)類型必須相同,并且相互對(duì)應(yīng)。
          • 各個(gè)SELECT語(yǔ)句之間使用UNION或UNION ALL關(guān)鍵字分隔。

          語(yǔ)法格式:

          SELECT column,... FROM table1UNION [ALL]SELECT column,... FROM table2

          UNION操作符

          UNION 操作符返回兩個(gè)查詢的結(jié)果集的并集,去除重復(fù)記錄。由于需要去除重復(fù),因此它的性能相對(duì)低一點(diǎn)。

          UNION ALL操作符

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

          如果明確知道合并數(shù)據(jù)后的結(jié)果數(shù)據(jù)無(wú)重復(fù)數(shù)據(jù),盡量使用UNION ALL語(yǔ)句,以提高數(shù)據(jù)查詢的效率。

          5. 7種SQL JOINS的實(shí)現(xiàn)

          代碼實(shí)現(xiàn)

          中圖:內(nèi)連接 A ∩ B

          SELECT employee_id,last_name,department_nameFROM employees e JOIN departments dON e.`department_id` = d.`department_id`;

          左上圖:左外連接

          SELECT employee_id,last_name,department_nameFROM employees e LEFT JOIN departments dON e.`department_id` = d.`department_id`;

          右上圖:右外連接

          SELECT employee_id,last_name,department_nameFROM employees e RIGHT JOIN departments dON e.`department_id` = d.`department_id`;

          左中圖:A - A ∩ B

          SELECT employee_id,last_name,department_nameFROM employees e LEFT JOIN departments dON e.`department_id` = d.`department_id`WHERE d.`department_id` IS NULL

          右中圖:B - A ∩ B

          這里解釋一下WHERE e.department_id IS NULL,首先是由右外連接衍生出來(lái)的,減去中間交集的部分,然后交際的部分是包含A和B的,只需要用條件從表A為NULL,即可將在B中有A的部分篩掉。

          SELECT employee_id,last_name,department_nameFROM employees e RIGHT JOIN departments dON e.`department_id` = d.`department_id`WHERE e.`department_id` IS NULL

          左下圖:滿外連接,左中圖 + 右上圖 A∪B

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

          右下圖:左中圖 + 右中圖 A ∪ B - A ∩ B 或者 ( A - A ∩ B) ∪ ( B - A ∩ B)

          SELECT employee_id,last_name,department_nameFROM employees e LEFT JOIN departments dON e.`department_id` = d.`department_id`WHERE d.`department_id` IS NULLUNION ALLSELECT employee_id,last_name,department_nameFROM employees e RIGHT JOIN departments dON e.`department_id` = d.`department_id`WHERE e.`department_id` IS NULL

          6.SQL99語(yǔ)法新特性

          自然連接

          可以把自然連接理解為 SQL92 中的等值連接。它會(huì)幫你自動(dòng)查詢兩張連接表中所有相同的字段,然后進(jìn)行等值連接。

          在 SQL92 標(biāo)準(zhǔn)中:

          SELECT employee_id,last_name,department_nameFROM employees e JOIN departments dON e.department_id = d.department_idAND e.manager_id = d.manager_id;

          在 SQL99 中你可以寫成:

          SELECT employee_id,last_name,department_nameFROM employees e NATURAL JOIN departments d;

          USING連接

          當(dāng)我們進(jìn)行連接的時(shí)候,SQL99 還支持使用 USING 指定數(shù)據(jù)表里的同名字段進(jìn)行等值連接。但是只能配合JOIN一起使用。比如:

          SELECT employee_id,last_name,department_nameFROM employees e JOIN departments dUSING (department_id);

          你能看出與自然連接 NATURAL JOIN 不同的是,USING 指定了具體的相同的字段名稱,你需要在 USING的括號(hào) () 中填入要指定的同名字段。同時(shí)使用 JOIN…USING 可以簡(jiǎn)化 JOIN ON 的等值連接。它與下面的 SQL 查詢結(jié)果是相同的:

          SELECT employee_id,last_name,department_nameFROM employees e ,departments dWHERE e.department_id = d.department_id;

          總結(jié):表連接的約束條件可以有三種方式:WHERE, ON, USING

          • WHERE:適用于所有關(guān)聯(lián)查詢
          • ON :只能和JOIN一起使用,只能寫關(guān)聯(lián)條件。雖然關(guān)聯(lián)條件可以并到WHERE中和其他條件一起寫,但分開(kāi)寫可讀性更好。建議一個(gè)JOIN一個(gè)ON的寫法。
          • USING:只能和JOIN一起使用,而且要求兩個(gè)關(guān)聯(lián)字段在關(guān)聯(lián)表中名稱一致,而且只能表示關(guān)聯(lián)字段值相等。

          注意:

          要控制連接表的數(shù)量。多表連接就相當(dāng)于嵌套 for 循環(huán)一樣,非常消耗資源,會(huì)讓 SQL 查詢性能下降得很嚴(yán)重,因此不要連接不必要的表。在許多 DBMS 中,也都會(huì)有最大連接表的限制。

          附錄:常用的 SQL 標(biāo)準(zhǔn)有哪些

          SQL 存在不同版本的標(biāo)準(zhǔn)規(guī)范,因?yàn)椴煌?guī)范下的表連接操作是有區(qū)別的。

          SQL 有兩個(gè)主要的標(biāo)準(zhǔn),分別是 SQL92 和 SQL99 。92 和 99 代表了標(biāo)準(zhǔn)提出的時(shí)間,SQL92 就是 92 年
          提出的標(biāo)準(zhǔn)規(guī)范。當(dāng)然除了 SQL92 和 SQL99 以外,還存在 SQL-86、SQL-89、SQL:2003、SQL:2008、
          SQL:2011 和 SQL:2016 等其他的標(biāo)準(zhǔn)。

          最重要的 SQL 標(biāo)準(zhǔn)就是 SQL92 和 SQL99。一般來(lái)說(shuō) SQL92 的形式更簡(jiǎn)單,但是寫的 SQL 語(yǔ)句會(huì)比較長(zhǎng),可讀性較差。而 SQL99 相比于 SQL92 來(lái)說(shuō),語(yǔ)法更加復(fù)雜,但可讀性更強(qiáng)。

          SQL92 和 SQL99 是經(jīng)典的 SQL 標(biāo)準(zhǔn),也分別叫做 SQL-2 和 SQL-3 標(biāo)準(zhǔn)。也正是在這兩個(gè)標(biāo)準(zhǔn)發(fā)布之后,SQL 影響力越來(lái)越大,甚至超越了數(shù)據(jù)庫(kù)領(lǐng)域。現(xiàn)如今 SQL 已經(jīng)不僅僅是數(shù)據(jù)庫(kù)領(lǐng)域的主流語(yǔ)言,還是信息領(lǐng)域中信息處理的主流語(yǔ)言,在圖形檢索、圖像檢索以及語(yǔ)音檢索中都能看到 SQL 語(yǔ)言的使用。

          練習(xí)題

          1.顯示所有員工的姓名,部門號(hào)和部門名稱

          SELECT last_name, e.department_id, department_nameFROM employees eLEFT OUTER JOIN departments dON e.department_id = d.department_id;

          2.查詢90號(hào)部門員工的job_id和90號(hào)部門的location_id

          SELECT job_id, location_idFROM employees eJOIN departments dON e.department_id = d.department_idWHERE e.department_id = 90;

          順便提一句,寫這道題時(shí)ON語(yǔ)句后加了個(gè); 導(dǎo)致查詢總是不對(duì),分析了好久才發(fā)現(xiàn)。不得不感嘆,SQL中分號(hào)真的不要亂加。

          3.選擇所有有獎(jiǎng)金的員工的 last_name , department_name , location_id , city

          SELECT last_name , department_name , d.location_id , cityFROM employees eLEFT OUTER JOIN departments dON e.`department_id` = d.`department_id`LEFT OUTER JOIN locations lON d.`location_id` = l.`location_id`WHERE commission_pct IS NOT NULL;

          4.選擇city在Toronto工作的員工的 last_name , job_id , department_id , department_name

          SELECT e.last_name , e.job_id , d.department_id , d.department_nameFROM locations lJOIN departments dON l.location_id = d.location_idJOIN employees eON d.department_id = e.department_idWHERE l.city = "Toronto";

          5.查詢員工所在的部門名稱、部門地址、姓名、工作、工資,其中員工所在部門的部門名稱為’Executive’

          SELECT department_name, street_address, last_name, job_id, salaryFROM employees e JOIN departments dON e.department_id = d.department_idJOIN locations lON d.`location_id` = l.`location_id`WHERE department_name = "Executive"

          6.選擇指定員工的姓名,員工號(hào),以及他的管理者的姓名和員工號(hào),結(jié)果類似于下面的格式

          employees Emp# manager Mgr#kochhar   101  king    100
          SELECT emp.last_name employees, emp.employee_id "Emp#", mgr.last_name manager,mgr.employee_id "Mgr#"FROM employees empLEFT OUTER JOIN employees mgrON emp.manager_id = mgr.employee_id;

          7.查詢哪些部門沒(méi)有員工

          SELECT d.department_nameFROM departments dLEFT OUTER JOIN employees eON d.department_id = e.department_idWHERE e.department_id IS NULL;

          這里簡(jiǎn)單地描述一下解題的思路:首先涉及兩張表,員工表和部門表,然后通過(guò)department_id建立聯(lián)系。接下來(lái)就要考慮如上圖的兩個(gè)部分,交集是有部門且有員工的部分,然后左外連接是各個(gè)部門號(hào),去除中間的交集就是部門號(hào)但是沒(méi)員工的部分。因此類似于左中圖。只需要讓從表的該條件為NULL即可。

          此外還有第二種辦法,子查詢:

          SELECT department_idFROM departments dWHERE NOT EXISTS (SELECT *FROM employees eWHERE e.`department_id` = d.`department_id`)

          8.查詢哪個(gè)城市沒(méi)有部門

          SELECT l.location_id,l.cityFROM locations l LEFT JOIN departments dON l.`location_id` = d.`location_id`WHERE d.`location_id` IS NULL

          9.查詢部門名為 Sales 或 IT 的員工信息

          SELECT employee_id,last_name,department_nameFROM employees e,departments dWHERE e.department_id = d.`department_id`AND d.`department_name` IN ("Sales","IT");

          練習(xí)題Part2

          儲(chǔ)備:建表操作:CREATE TABLE `t_dept` (`id` INT(11) NOT NULL AUTO_INCREMENT,`deptName` VARCHAR(30) DEFAULT NULL,`address` VARCHAR(40) DEFAULT NULL,PRIMARY KEY (`id`)) ENGINE=INNODB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;CREATE TABLE `t_emp` (`id` INT(11) NOT NULL AUTO_INCREMENT,`name` VARCHAR(20) DEFAULT NULL,`age` INT(3) DEFAULT NULL,`deptId` INT(11) DEFAULT NULL,empno int not null,PRIMARY KEY (`id`),KEY `idx_dept_id` (`deptId`)#CONSTRAINT `fk_dept_id` FOREIGN KEY (`deptId`) REFERENCES `t_dept` (`id`)) ENGINE=INNODB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;INSERT INTO t_dept(deptName,address) VALUES("華山","華山");INSERT INTO t_dept(deptName,address) VALUES("丐幫","洛陽(yáng)");INSERT INTO t_dept(deptName,address) VALUES("峨眉","峨眉山");INSERT INTO t_dept(deptName,address) VALUES("武當(dāng)","武當(dāng)山");INSERT INTO t_dept(deptName,address) VALUES("明教","光明頂");INSERT INTO t_dept(deptName,address) VALUES("少林","少林寺");INSERT INTO t_emp(NAME,age,deptId,empno) VALUES("風(fēng)清揚(yáng)",90,1,100001);INSERT INTO t_emp(NAME,age,deptId,empno) VALUES("岳不群",50,1,100002);INSERT INTO t_emp(NAME,age,deptId,empno) VALUES("令狐沖",24,1,100003);INSERT INTO t_emp(NAME,age,deptId,empno) VALUES("洪七公",70,2,100004);INSERT INTO t_emp(NAME,age,deptId,empno) VALUES("喬峰",35,2,100005);INSERT INTO t_emp(NAME,age,deptId,empno) VALUES("滅絕師太",70,3,100006);INSERT INTO t_emp(NAME,age,deptId,empno) VALUES("周芷若",20,3,100007);INSERT INTO t_emp(NAME,age,deptId,empno) VALUES("張三豐",100,4,100008);INSERT INTO t_emp(NAME,age,deptId,empno) VALUES("張無(wú)忌",25,5,100009);INSERT INTO t_emp(NAME,age,deptId,empno) VALUES("韋小寶",18,null,100010);【題目】#1.所有有門派的人員信息( A、B兩表共有)#2.列出所有用戶,并顯示其機(jī)構(gòu)信息(A的全集)#3.列出所有門派(B的全集)#4.所有不入門派的人員(A的獨(dú)有)#5.所有沒(méi)人入的門派(B的獨(dú)有)#6.列出所有人員和機(jī)構(gòu)的對(duì)照關(guān)系(AB全有)#MySQL Full Join的實(shí)現(xiàn) 因?yàn)镸ySQL不支持FULL JOIN,下面是替代方法#left join + union(可去除重復(fù)數(shù)據(jù))+ right join#7.列出所有沒(méi)入派的人員和沒(méi)人入的門派(A的獨(dú)有+B的獨(dú)有)

          1.所有有門派的人員信息( A、B兩表共有)

          select *from t_emp a inner join t_dept bon a.deptId = b.id;

          2.列出所有用戶,并顯示其機(jī)構(gòu)信息(A的全集)

          select *from t_emp a left join t_dept bon a.deptId = b.id;

          3.列出所有門派(B的全集)

          select *from t_dept b;

          4.所有不入門派的人員(A的獨(dú)有)

          select *from t_emp a left join t_dept bon a.deptId = b.idwhere b.id is null;

          5.所有沒(méi)人入的門派(B的獨(dú)有)

          select *from t_dept b left join t_emp aon a.deptId = b.idwhere a.deptId is null;

          6.列出所有人員和機(jī)構(gòu)的對(duì)照關(guān)系 (AB全有)

          #MySQL Full Join的實(shí)現(xiàn) 因?yàn)镸ySQL不支持FULL JOIN,下面是替代方法#left join + union(可去除重復(fù)數(shù)據(jù))+ right joinSELECT *FROM t_emp A LEFT JOIN t_dept BON A.deptId = B.idUNIONSELECT *FROM t_emp A RIGHT JOIN t_dept BON A.deptId = B.id

          7.列出所有沒(méi)入派的人員和沒(méi)人入的門派(A的獨(dú)有+B的獨(dú)有)

          SELECT *FROM t_emp A LEFT JOIN t_dept BON A.deptId = B.idWHERE B.`id` IS NULLUNIONSELECT *FROM t_emp A RIGHT JOIN t_dept BON A.deptId = B.idWHERE A.`deptId` IS NULL;

          總結(jié)

          到此這篇關(guān)于MySQL多表查詢與7種JOINS實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)MySQL多表查詢與JOINS實(shí)現(xiàn)內(nèi)容請(qǐng)搜索以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持!

          標(biāo)簽: MySQL
          主站蜘蛛池模板: 日韩一区二区三区在线免费观看 | 搞黄视频在线观看 | 日韩a级片在线观看 | 亚洲成在人网站天堂一区二区 | 精品哟哟哟国产在线不卡 | 国产精品极品美女自在线看免费一区二区 | 中国孕妇疯狂xxxxbbbb | 日本一级毛片免费 | 欧美操片在线观看 | 一区卡二区卡三区卡视频 | 日本一级毛片视频无遮挡免费 | 国产精品不卡 | 欧美日韩中文国产一区二区三区 | 国产亚洲精品久久久久久牛牛 | 精品视自拍视频在线观看 | 国产精品好好热在线观看 | 亚洲毛片在线免费观看 | 伊人骚 | 亚洲精品久久久久久动漫剧情 | 国内视频拍拍视频在线观看 | 四虎激情做人爰 | 免费一级欧美性大片 | 国产精品午夜激爽毛片 | 免费中文字幕在线国语 | 欧美人拘一级毛片 | 欧美vs日韩vs国产在线观看 | 欧美一级特黄特黄做受 | 日本特黄特黄aaaaa大片 | 成人网在线看 | 俄国特级毛片www免 俄罗斯14一18处交 | 国内自拍视频一区二区三区 | 欧美日本一道高清二区三区 | 国产1区二区 | 在线麻豆| 伊人久久国产免费观看视频 | 成人在线播放视频 | 成人欧美视频在线观看播放 | 成人满18在线观看网站免费 | 无人区二区三区地址 | 天天久久 | 国产一区二区三区播放 |