摘要:問題回答個數(shù)標簽標簽名稱是什么是什么前端是什么大前端是什么是什么是什么多線程七全連接去交集問題回答個數(shù)標簽標簽名稱是什么是什么是什么多線程
準備數(shù)據(jù)
以一個簡易問答系統(tǒng)為例,包括問題表和問題所屬標簽,問題表如下:
CREATE TABLE `t_qa` ( `id` bigint(20) NOT NULL AUTO_INCREMENT, `title` varchar(200) NOT NULL DEFAULT "" COMMENT "標題", `answer_count` int(5) unsigned NOT NULL DEFAULT "0" COMMENT "回答個數(shù)", `label_id` bigint(20) unsigned NOT NULL DEFAULT "0" COMMENT "標簽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)建時間", `update_by` bigint(20) unsigned DEFAULT NULL COMMENT "更新人", `update_date` datetime DEFAULT NULL COMMENT "更新時間", `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);
標簽表如下:
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)建時間", `update_by` bigint(20) unsigned DEFAULT NULL COMMENT "更新人", `update_date` datetime DEFAULT NULL COMMENT "更新時間", `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)
問題 | 回答個數(shù) | 標簽id | 標簽名稱 |
---|---|---|---|
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)
問題 | 回答個數(shù) | 標簽id | 標簽名稱 |
---|---|---|---|
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)
問題 | 回答個數(shù) | 標簽id | 標簽名稱 |
---|---|---|---|
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四、左獨有連接(LEFT JOIN)
問題 | 回答個數(shù) | 標簽id | 標簽名稱 |
---|---|---|---|
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五、右獨有連接(RIGHT JOIN)
問題 | 回答個數(shù) | 標簽id | 標簽名稱 |
---|---|---|---|
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,所以如果有全連接需求時,可用表達式:full outer join = left outer join UNION right outer join來實現(xiàn)。
問題 | 回答個數(shù) | 標簽id | 標簽名稱 |
---|---|---|---|
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)
問題 | 回答個數(shù) | 標簽id | 標簽名稱 |
---|---|---|---|
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)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/17630.html
摘要:步優(yōu)化以及其它數(shù)據(jù)庫后端掘金原文鏈接在發(fā)表了一篇簡潔有效有趣和令人信服的分鐘教程描述了如何進行優(yōu)化。關(guān)于的七種后端掘金對于的,在學(xué)習(xí)起來可能是比較亂的。 5 步優(yōu)化 MongoDB 以及其它數(shù)據(jù)庫 - 后端 - 掘金原文鏈接 Jared Rosoff 在 Scale Out Camp 發(fā)表了一篇簡潔、有效、有趣和令人信服的《8 分鐘 MongoDB 教程》描述了如何進行 MongoDB...
閱讀 1951·2021-09-07 10:24
閱讀 2087·2019-08-30 15:55
閱讀 2037·2019-08-30 15:43
閱讀 669·2019-08-29 15:25
閱讀 1044·2019-08-29 12:19
閱讀 1927·2019-08-23 18:32
閱讀 1515·2019-08-23 17:59
閱讀 947·2019-08-23 12:22