成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

【MySQL筆記】七種JOIN的SQL

miya / 2403人閱讀

摘要:?jiǎn)栴}回答個(gè)數(shù)標(biāo)簽標(biāo)簽名稱是什么是什么前端是什么大前端是什么是什么是什么多線程七全連接去交集問(wèn)題回答個(gè)數(shù)標(biāo)簽標(biāo)簽名稱是什么是什么是什么多線程

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

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

CREATE TABLE `t_qa` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT,
  `title` varchar(200) NOT NULL DEFAULT "" COMMENT "標(biāo)題",
  `answer_count` int(5) unsigned NOT NULL DEFAULT "0" COMMENT "回答個(gè)數(shù)",
  `label_id` bigint(20) unsigned NOT NULL DEFAULT "0" COMMENT "標(biāo)簽id",
  `create_by` bigint(20) unsigned NOT NULL DEFAULT "0" COMMENT "創(chuàng)建人",
  `create_date` datetime NOT NULL DEFAULT "0000-00-00 00:00:00" COMMENT "創(chuàng)建時(shí)間",
  `update_by` bigint(20) unsigned DEFAULT NULL COMMENT "更新人",
  `update_date` datetime DEFAULT NULL COMMENT "更新時(shí)間",
  `del_flag` tinyint(1) unsigned NOT NULL DEFAULT "0" COMMENT "0:不刪除,1:刪除",
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

INSERT INTO `t_qa` (`id`, `title`, `answer_count`, `label_id`, `create_by`, `create_date`, `update_by`, `update_date`, `del_flag`)
VALUES
    (1, "Java是什么?", 5, 1, 0, "2017-08-24 17:43:53", 0, "2017-08-24 17:43:53", 0),
    (2, "PHP是什么?", 4, 2, 0, "2017-08-24 17:43:53", 0, "2017-08-24 17:43:53", 0),
    (3, "前端是什么?", 3, 3, 0, "2017-08-24 17:43:53", 0, "2017-08-24 17:43:53", 0),
    (4, "nodejs是什么?", 2, 0, 0, "2017-08-24 17:43:53", 0, "2017-08-24 17:43:53", 0),
    (5, "css是什么?", 1, 0, 0, "2017-08-24 17:43:53", 0, "2017-08-24 17:43:53", 0),
    (6, "JavaScript是什么?", 0, 0, 0, "2017-08-24 17:43:53", 0, "2017-08-24 17:43:53", 0);

標(biāo)簽表如下:

CREATE TABLE `t_label` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT,
  `name` varchar(50) NOT NULL DEFAULT "" COMMENT "名稱",
  `create_by` bigint(20) unsigned NOT NULL DEFAULT "0" COMMENT "創(chuàng)建人",
  `create_date` datetime NOT NULL DEFAULT "0000-00-00 00:00:00" COMMENT "創(chuàng)建時(shí)間",
  `update_by` bigint(20) unsigned DEFAULT NULL COMMENT "更新人",
  `update_date` datetime DEFAULT NULL COMMENT "更新時(shí)間",
  `del_flag` tinyint(1) unsigned NOT NULL DEFAULT "0" COMMENT "0:不刪除,1:刪除",
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

INSERT INTO `t_label` (`id`, `name`, `create_by`, `create_date`, `update_by`, `update_date`, `del_flag`)
VALUES
    (1, "java", 0, "2017-08-24 17:43:53", 0, "2017-08-24 17:43:53", 0),
    (2, "php", 0, "2017-08-24 17:43:53", 0, "2017-08-24 17:43:53", 0),
    (3, "大前端", 0, "2017-08-24 17:43:53", 0, "2017-08-24 17:43:53", 0),
    (4, "mybatis", 0, "2017-08-24 17:43:53", 0, "2017-08-24 17:43:53", 0),
    (5, "python", 0, "2017-08-24 17:43:53", 0, "2017-08-24 17:43:53", 0),
    (6, "多線程", 0, "2017-08-24 17:43:53", 0, "2017-08-24 17:43:53", 0);
一、左連接(LEFT JOIN)

問(wè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是什么? 1 NULL NULL
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
二、右連接(RIGHT JOIN)

問(wèn)題 回答個(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 多線程
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
三、內(nèi)連接(INNER JOIN)

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

問(wèn)題 回答個(gè)數(shù) 標(biāo)簽id 標(biāo)簽名稱
nodejs是什么? 2 NULL NULL
css是什么? 1 NULL NULL
JavaScript是什么? 0 NULL NULL
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
五、右獨(dú)有連接(RIGHT JOIN)

問(wèn)題 回答個(gè)數(shù) 標(biāo)簽id 標(biāo)簽名稱
NULL NULL 4 mybatis
NULL NULL 5 python
NULL NULL 6 多線程
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
六、全連接(FULL JOIN)

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

問(wè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 多線程
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
UNION
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)

問(wèn)題 回答個(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 多線程
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
UNION
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

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/17630.html

相關(guān)文章

  • mysql - 收藏集 - 掘金

    摘要:步優(yōu)化以及其它數(shù)據(jù)庫(kù)后端掘金原文鏈接在發(fā)表了一篇簡(jiǎn)潔有效有趣和令人信服的分鐘教程描述了如何進(jìn)行優(yōu)化。關(guān)于的七種后端掘金對(duì)于的,在學(xué)習(xí)起來(lái)可能是比較亂的。 5 步優(yōu)化 MongoDB 以及其它數(shù)據(jù)庫(kù) - 后端 - 掘金原文鏈接 Jared Rosoff 在 Scale Out Camp 發(fā)表了一篇簡(jiǎn)潔、有效、有趣和令人信服的《8 分鐘 MongoDB 教程》描述了如何進(jìn)行 MongoDB...

    Donald 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

miya

|高級(jí)講師

TA的文章

閱讀更多
最新活動(dòng)
閱讀需要支付1元查看
<