日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
【MySQL筆記】七種JOIN的SQL

準(zhǔn)備數(shù)據(jù)

以一個(gè)簡易問答系統(tǒng)為例,包括問題表和問題所屬標(biāo)簽,問題表如下:

 
 
 
 
  1. CREATE TABLE `t_qa` (
  2.   `id` bigint(20) NOT NULL AUTO_INCREMENT,
  3.   `title` varchar(200) NOT NULL DEFAULT '' COMMENT '標(biāo)題',
  4.   `answer_count` int(5) unsigned NOT NULL DEFAULT '0' COMMENT '回答個(gè)數(shù)',
  5.   `label_id` bigint(20) unsigned NOT NULL DEFAULT '0' COMMENT '標(biāo)簽id',
  6.   `create_by` bigint(20) unsigned NOT NULL DEFAULT '0' COMMENT '創(chuàng)建人',
  7.   `create_date` datetime NOT NULL DEFAULT '0000-00-00 00:00:00' COMMENT '創(chuàng)建時(shí)間',
  8.   `update_by` bigint(20) unsigned DEFAULT NULL COMMENT '更新人',
  9.   `update_date` datetime DEFAULT NULL COMMENT '更新時(shí)間',
  10.   `del_flag` tinyint(1) unsigned NOT NULL DEFAULT '0' COMMENT '0:不刪除,1:刪除',
  11.   PRIMARY KEY (`id`)
  12. ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
  13. INSERT INTO `t_qa` (`id`, `title`, `answer_count`, `label_id`, `create_by`, `create_date`, `update_by`, `update_date`, `del_flag`)
  14. VALUES
  15.     (1, 'Java是什么?', 5, 1, 0, '2017-08-24 17:43:53', 0, '2017-08-24 17:43:53', 0),
  16.     (2, 'PHP是什么?', 4, 2, 0, '2017-08-24 17:43:53', 0, '2017-08-24 17:43:53', 0),
  17.     (3, '前端是什么?', 3, 3, 0, '2017-08-24 17:43:53', 0, '2017-08-24 17:43:53', 0),
  18.     (4, 'nodejs是什么?', 2, 0, 0, '2017-08-24 17:43:53', 0, '2017-08-24 17:43:53', 0),
  19.     (5, 'css是什么?', 1, 0, 0, '2017-08-24 17:43:53', 0, '2017-08-24 17:43:53', 0),
  20.     (6, 'JavaScript是什么?', 0, 0, 0, '2017-08-24 17:43:53', 0, '2017-08-24 17:43:53', 0); 

標(biāo)簽表如下:

 
 
 
 
  1. CREATE TABLE `t_label` (
  2.   `id` bigint(20) NOT NULL AUTO_INCREMENT,
  3.   `name` varchar(50) NOT NULL DEFAULT '' COMMENT '名稱',
  4.   `create_by` bigint(20) unsigned NOT NULL DEFAULT '0' COMMENT '創(chuàng)建人',
  5.   `create_date` datetime NOT NULL DEFAULT '0000-00-00 00:00:00' COMMENT '創(chuàng)建時(shí)間',
  6.   `update_by` bigint(20) unsigned DEFAULT NULL COMMENT '更新人',
  7.   `update_date` datetime DEFAULT NULL COMMENT '更新時(shí)間',
  8.   `del_flag` tinyint(1) unsigned NOT NULL DEFAULT '0' COMMENT '0:不刪除,1:刪除',
  9.   PRIMARY KEY (`id`)
  10. ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
  11. INSERT INTO `t_label` (`id`, `name`, `create_by`, `create_date`, `update_by`, `update_date`, `del_flag`)
  12. VALUES
  13.     (1, 'java', 0, '2017-08-24 17:43:53', 0, '2017-08-24 17:43:53', 0),
  14.     (2, 'php', 0, '2017-08-24 17:43:53', 0, '2017-08-24 17:43:53', 0),
  15.     (3, '大前端', 0, '2017-08-24 17:43:53', 0, '2017-08-24 17:43:53', 0),
  16.     (4, 'mybatis', 0, '2017-08-24 17:43:53', 0, '2017-08-24 17:43:53', 0),
  17.     (5, 'python', 0, '2017-08-24 17:43:53', 0, '2017-08-24 17:43:53', 0),
  18.     (6, '多線程', 0, '2017-08-24 17:43:53', 0, '2017-08-24 17:43:53', 0); 

一、左連接(LEFT JOIN)

問題 回答個(gè)數(shù) 標(biāo)簽id 標(biāo)簽名稱
Java是什么? 5 1 java
PHP是什么? 4 2 php
前端是什么? 3 3 大前端
nodejs是什么? 2 NULL NULL
css是什么? 1 NULL NULL
JavaScript是什么? 1 NULL NULL
 
 
 
 
  1. SELECT 
  2.     tq.title, tq.answer_count, tl.id, tl.name
  3. FROM 
  4.     t_qa tq LEFT JOIN t_label tl ON tq.label_id = tl.id 

二、右連接(RIGHT JOIN)

問題 回答個(gè)數(shù) 標(biāo)簽id 標(biāo)簽名稱
Java是什么? 5 1 java
PHP是什么? 4 2 php
前端是什么? 3 3 大前端
NULL NULL 4 mybatis
NULL NULL 5 python
NULL NULL 6 多線程
 
 
 
 
  1. SELECT 
  2.    tq.title, tq.answer_count, tl.id, tl.name
  3. FROM 
  4.     t_qa tq RIGHT JOIN t_label tl ON tq.label_id = tl.id 

三、內(nèi)連接(INNER JOIN)

問題 回答個(gè)數(shù) 標(biāo)簽id 標(biāo)簽名稱
Java是什么? 5 1 java
PHP是什么? 4 2 php
前端是什么? 3 3 大前端
 
 
 
 
  1. SELECT 
  2.     tq.title, tq.answer_count, tl.id, tl.name
  3. FROM 
  4.     t_qa tq INNER JOIN t_label tl ON tq.label_id = tl.id 

四、左獨(dú)有連接(LEFT JOIN)

問題 回答個(gè)數(shù) 標(biāo)簽id 標(biāo)簽名稱
nodejs是什么? 2 NULL NULL
css是什么? 1 NULL NULL
JavaScript是什么? 0 NULL NULL
 
 
 
 
  1. SELECT 
  2.     tq.title, tq.answer_count, tl.id, tl.name
  3. FROM 
  4.     t_qa tq LEFT JOIN t_label tl ON tq.label_id = tl.id
  5. WHERE
  6.     tl.id IS NULL 

五、右獨(dú)有連接(RIGHT JOIN)

問題 回答個(gè)數(shù) 標(biāo)簽id 標(biāo)簽名稱
NULL NULL 4 mybatis
NULL NULL 5 python
NULL NULL 6 多線程
 
 
 
 
  1. SELECT 
  2.     tq.title, tq.answer_count, tl.id, tl.name
  3. FROM 
  4.     t_qa tq RIGHT JOIN t_label tl ON tq.label_id = tl.id
  5. WHERE
  6.     tq.label_id IS NULL 

六、全連接(FULL JOIN)

由于MySQL不支持FULL OUTER JOIN,所以如果有全連接需求時(shí),可用表達(dá)式:full outer join = left outer join UNION right outer join來實(shí)現(xiàn)。

問題 回答個(gè)數(shù) 標(biāo)簽id 標(biāo)簽名稱
Java是什么? 5 1 java
PHP是什么? 4 2 php
前端是什么? 3 3 大前端
nodejs是什么? 2 NULL NULL
css是什么? 1 NULL NULL
JavaScript是什么? 0 NULL NULL
NULL NULL 4 mybatis
NULL NULL 5 python
NULL NULL 6 多線程
 
 
 
 
  1. SELECT tq.title, tq.answer_count, tl.id, tl.name FROM t_qa tq LEFT JOIN t_label tl ON tq.label_id = tl.id
  2. UNION
  3. SELECT tq.title, tq.answer_count, tl.id, tl.name FROM t_qa tq RIGHT JOIN t_label tl ON tq.label_id = tl.id  

七、全連接去交集(FULL JOIN)

問題 回答個(gè)數(shù) 標(biāo)簽id 標(biāo)簽名稱
nodejs是什么? 2 NULL NULL
css是什么? 1 NULL NULL
JavaScript是什么? 0 NULL NULL
NULL NULL 4 mybatis
NULL NULL 5 python
NULL NULL 6 多線程
 
 
 
 
  1. SELECT tq.title, tq.answer_count, tl.id, tl.name FROM t_qa tq LEFT JOIN t_label tl ON tq.label_id = tl.id WHERE tl.id IS NULL
  2. UNION
  3. SELECT tq.title, tq.answer_count, tl.id, tl.name FROM t_qa tq RIGHT JOIN t_label tl ON tq.label_id = tl.id WHERE tq.label_id IS NULL 

分享標(biāo)題:【MySQL筆記】七種JOIN的SQL
轉(zhuǎn)載源于:http://m.5511xx.com/article/dhdhpgp.html