校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃

主頁(yè) > 知識(shí)庫(kù) > SQL之Join的使用詳解

SQL之Join的使用詳解

熱門(mén)標(biāo)簽:隨州營(yíng)銷(xiāo)電話機(jī)器人怎么樣 高德地圖標(biāo)注商家在哪 杭州400電話如何申請(qǐng)的 400電話申請(qǐng)?jiān)趺纯?/a> 江西南昌百應(yīng)電話機(jī)器人 機(jī)器人電話機(jī)創(chuàng)意繪畫(huà) hbuilder地圖標(biāo)注 天音通信電話機(jī)器人 400電話從哪里申請(qǐng)濱州

一.基本概念

關(guān)于sql語(yǔ)句中的連接(join)關(guān)鍵字,是較為常用而又不太容易理解的關(guān)鍵字,下面這個(gè)例子給出了一個(gè)簡(jiǎn)單的解釋 –建表user1,user2:

table1 : create table user2(id int, user_name varchar(10), over varchar(10));
insert into user1 values(1, ‘tangseng', ‘dtgdf');
insert into user1 values(2, ‘sunwukong', ‘dzsf');
insert into user1 values(1, ‘zhubajie', ‘jtsz');
insert into user1 values(1, ‘shaseng', ‘jslh');
table2 : create table user2(id int, user_name varchar(10), over varchar(10));
insert into user2 values(1, ‘sunwukong', ‘chengfo');
insert into user2 values(2, ‘niumowang', ‘chengyao');
insert into user2 values(3, ‘jiaomowang', ‘chengyao');
insert into user2 values(4, ‘pengmowang', ‘chengyao');

SQL標(biāo)準(zhǔn)中Join的類(lèi)型

1. 內(nèi)連接(inner join或join)

(1).概念:內(nèi)聯(lián)接是基于連接謂詞將兩張表的列結(jié)合在一起,產(chǎn)生新的結(jié)果表

(2).內(nèi)連接維恩圖:

(3).sql語(yǔ)句

select a.id, a.user_name, b.over from user1 a inner join user2 b on a.user_name=b.user_name;

結(jié)果:

2. 外連接

外連接包括左向外聯(lián)接、右向外聯(lián)接或完整外部聯(lián)接

a.左外連接:left join 或 left outer join
(1)概念:左向外聯(lián)接的結(jié)果集包括 LEFT OUTER 子句中指定的左表的所有行,而不僅僅是聯(lián)接列所匹配的行。如果左表的某行在右表中沒(méi)有匹配行,則在相關(guān)聯(lián)的結(jié)果集行中右表的所有選擇列表列均為空值(null)。

(2)左外連接維恩圖:

(3)sql語(yǔ)句:

select a.id, a.user_name, b.over from user1 a left join user2 b on a.user_name=b.user_name;

結(jié)果:

b.右外連接:right join 或 right outer join
(1)右向外聯(lián)接是左向外聯(lián)接的反向聯(lián)接。將返回右表的所有行。如果右表的某行在左表中沒(méi)有匹配行,則將為左表返回空值。
(2)右外連接維恩圖:

(3)sql語(yǔ)句

select b.user_name, b.over, a.over from user1 a right join user2 b on a.user_name=b.user_name;

結(jié)果:

c.全外連接:full join 或 full outer join

(1)完整外部聯(lián)接返回左表和右表中的所有行。當(dāng)某行在另一個(gè)表中沒(méi)有匹配行時(shí),則另一個(gè)表的選擇列表列包含空值。如果表之間有匹配行,則整個(gè)結(jié)果集行包含基表的數(shù)據(jù)值。
(2)右外連接維恩圖:

(3)sql語(yǔ)句

select a.id, a.user_name, b.over from user1 a full join user2 b on a.user_name=b.user_name

在mysql中查詢?nèi)B接會(huì)報(bào)1064的錯(cuò)誤,mysql不支持全連接查詢,代替語(yǔ)句:

select a.user_name,a.over,b.over from user1 a left join user2 b on a.user_name = b.user_name union all select b.user_name,b.over ,a.over from user1 a right join user2 b on a.user_name = b.user_name;

結(jié)果:

3. 笛卡爾連接(交叉連接)

1.概念:沒(méi)有 WHERE 子句的交叉聯(lián)接將產(chǎn)生聯(lián)接所涉及的表的笛卡爾積。第一個(gè)表的行數(shù)乘以第二個(gè)表的行數(shù)等于笛卡爾積結(jié)果集的大小。(user1和user2交叉連接產(chǎn)生4*4=16條記錄)
2.交叉連接:cross join (不帶條件on)
3.sql語(yǔ)句:
select a.user_name,b.user_name, a.over, b.over from user1 a cross join user2 b;

二.使用技巧

1. 使用join更新表
我們使用下面語(yǔ)句將user1表中同時(shí)存在user1表和user2表中記錄的over字段更新為 ‘qtda'。

update user1 set over='qtds'where user1.user_name in (select b.user_name from user1 a inner join user2 b on a.user_name = b.user_name);

這條語(yǔ)句在sql server, oracle中都可以正確執(zhí)行,在mysql卻報(bào)錯(cuò),mysql不支持更新子查詢的表,那么我們使用下面語(yǔ)句可以在做到。

update user1 a join (select b.user_name from user1 a join user2 b on a.user_name = b.user_name) b on a.user_name = b.user_name set a.over = ‘qtds'

2. 使用join優(yōu)化子查詢

子查詢效率比較低效,使用下面語(yǔ)句進(jìn)行查詢
select a.user_name, a.over,(select over from user2 b where a.user_name=b.user_name) as over2 from user1 a;
使用join優(yōu)化子查詢,可以實(shí)現(xiàn)同樣的效果
select a.user_name, a.over, b.over as over2 from user1 a left join user2
b on a.user_name = b.user_name;

3. 使用join優(yōu)化聚合子查詢

引入一張新表:user_kills
create table user_kills(user_id int, timestr varchar(20), kills int(10));
insert into user_kills values(2, ‘2015-5-12', 20);
insert into user_kills values(2, ‘2015-5-15', 18);
insert into user_kills values(3, ‘2015-5-11', 16);
insert into user_kills values(3, ‘2015-5-14', 13);
insert into user_kills values(3, ‘2015-5-16', 17);
insert into user_kills values(4, ‘2015-5-12', 16);
insert into user_kills values(4, ‘2015-5-10', 13);

查詢user1中每人對(duì)應(yīng)user_kills表中kills最大的日期,使用聚合子查詢語(yǔ)句:

select a.user_name,b.timestr, b.kills from user1 a join user_kills b on a
.id = b.user_id where b.kills = (select MAX(c.kills) from user_kills c where c.user_id = b.user_id);

使用join優(yōu)化聚合子查詢(避免子查詢)

select a.user_name, b.timestr, b.kills from user1 a join user_kills b on
a.id = b.user_id join user_kills c on c.user_id = b.user_id group by a.user_name, b.timestr, b.kills having b.kills = max(c.kills);

結(jié)果:

4. 實(shí)現(xiàn)分組選擇數(shù)據(jù)

要求查詢出user1中每個(gè)人kills對(duì)多的前兩天。
首先,我們可以通過(guò)下面語(yǔ)句查詢出某個(gè)人kills最多的兩天;

select a.user_name, b.timestr, b.kills from user1 a join user_kills b on
a.id = b.user_id where a.user_name ='sunwukong' order by b.kills desc limit 2;

那么如何通過(guò)一個(gè)語(yǔ)句查詢出所有人kills最多的兩天的呢?看下面的語(yǔ)句:

WITH tmp AS (select a.user_name, b.timestr, b.kills, ROW_NUMBER() over(partition by a.user_name order by b.kills) cnt from user1 a join user_kills b on a.id = b.user_id) select * from tmp where cnt = 2;

上面的語(yǔ)句在sql server和oracle都是支持的,但是mysql不支持分組排序函數(shù)ROW_NUMBER(),下面提供一種替代方法:

select d.user_name,c.timestr, kills from (select user_id, timestr, kills, (select count(*) from user_kills b where b.user_id = a.user_id and a.kills = b.kills) as cnt from user_kills a group by user_id, timestr, kills) c join user1 d on c.user_id = d.id where cnt = 2;

結(jié)果:

到此這篇關(guān)于SQL之Join的使用詳解的文章就介紹到這了,更多相關(guān)SQL之Join內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

標(biāo)簽:沈陽(yáng) 石嘴山 常德 保定 昆明 鶴崗 招商 葫蘆島

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《SQL之Join的使用詳解》,本文關(guān)鍵詞  SQL,之,Join,的,使用,詳解,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《SQL之Join的使用詳解》相關(guān)的同類(lèi)信息!
  • 本頁(yè)收集關(guān)于SQL之Join的使用詳解的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃
    亚洲成人tv网| 国产精品拍天天在线| 亚洲国产精品久久久久婷婷884| 欧美午夜宅男影院| 精品亚洲成a人| 精品一区二区免费| 一区二区在线观看av| 欧美变态凌虐bdsm| 欧美日本不卡视频| 国产乱人伦偷精品视频不卡| 国产精品欧美综合在线| 日韩一区二区免费电影| 91亚洲国产成人精品一区二区三 | 日韩一区二区在线播放| heyzo一本久久综合| 亚洲一区二区三区视频在线 | 久久网站最新地址| 91精选在线观看| 一本大道久久a久久精二百| 国产露脸91国语对白| 热久久国产精品| 一区二区成人在线| 亚洲色图欧美激情| 国产亚洲一本大道中文在线| 精品久久国产老人久久综合| 成人高清免费观看| 国产白丝网站精品污在线入口| 免费的成人av| 免费不卡在线视频| 日韩av网站免费在线| 日韩成人伦理电影在线观看| 激情文学综合丁香| 国产在线视频一区二区三区| 极品少妇一区二区三区精品视频| 蜜桃视频在线一区| 首页亚洲欧美制服丝腿| 亚洲一卡二卡三卡四卡| 欧美精选一区二区| 精品国产不卡一区二区三区| 日韩精品一区二区三区视频播放| 欧美午夜电影在线播放| 欧美日韩国产不卡| 欧美日韩不卡在线| 91福利视频久久久久| 精品国产人成亚洲区| 精品女同一区二区| 日韩精品一区二区三区在线播放| 欧美高清dvd| 欧美xxxxxxxx| 中文字幕第一区综合| 欧美日韩精品一区二区| 国产成人福利片| 成人av小说网| 不卡区在线中文字幕| 4438成人网| 一区二区三区四区在线| 成人免费高清在线观看| 日韩一级片在线观看| 亚洲精品国产一区二区精华液 | 久久国产精品色| 欧美中文一区二区三区| 国产精品久久久久久久第一福利 | 国产午夜精品理论片a级大结局 | 精品国产伦一区二区三区免费| 一区二区三区美女视频| 成人福利在线看| 久久日韩粉嫩一区二区三区| 伊人婷婷欧美激情| jizzjizzjizz欧美| 日本一区二区三区免费乱视频| 国模一区二区三区白浆 | 九九**精品视频免费播放| 色狠狠桃花综合| 亚洲国产精品精华液2区45| 久久av中文字幕片| 日韩无一区二区| 理论电影国产精品| 欧美草草影院在线视频| 美国毛片一区二区三区| 欧美电影在哪看比较好| 婷婷开心激情综合| 欧美一区二区播放| 奇米一区二区三区av| 欧美一区二区三区爱爱| 日韩成人一级大片| 精品国产乱码久久久久久闺蜜| 免费在线成人网| 精品国免费一区二区三区| 国产一区二区三区四区五区美女| 日韩一二三四区| 国产在线精品一区二区不卡了| 欧美一二三四区在线| 国产精品综合在线视频| 国产精品午夜春色av| 91麻豆swag| 午夜精品久久久久久久久久久| 制服丝袜在线91| 国内精品自线一区二区三区视频| 久久伊99综合婷婷久久伊| av网站免费线看精品| 一区二区欧美精品| 欧美一区二区视频在线观看2022| 久久精品国产一区二区三区免费看| 日韩一区二区三区四区| 成人综合婷婷国产精品久久| 亚洲视频在线观看一区| 7777精品伊人久久久大香线蕉经典版下载| 午夜视频在线观看一区二区| 精品国产一区二区三区忘忧草| 国产一区视频导航| 亚洲欧美激情一区二区| 91精品欧美综合在线观看最新| 国产.欧美.日韩| 亚洲精品老司机| 久久久久久免费网| 日本道免费精品一区二区三区| 免费视频最近日韩| 亚洲免费观看高清| 日韩免费福利电影在线观看| 丰满亚洲少妇av| 午夜精品久久久久久久久久久 | av高清久久久| 久久精品国产99国产| 亚洲天堂精品在线观看| 欧美成人性福生活免费看| 94-欧美-setu| 国产一区二区三区在线观看免费 | 国产精品久久久久婷婷| 欧美精品久久一区二区三区| 国产iv一区二区三区| 美日韩黄色大片| 亚洲欧美日韩精品久久久久| 精品对白一区国产伦| 欧美午夜影院一区| 99久久精品免费看国产| 久久精品噜噜噜成人88aⅴ| 亚洲国产精品一区二区www在线| 欧美极品美女视频| 精品久久久久av影院| 欧美日韩黄色影视| av一区二区不卡| 成人午夜碰碰视频| 狠狠色丁香久久婷婷综合_中| 亚洲国产精品一区二区久久 | 激情成人午夜视频| 日韩电影在线观看网站| 亚洲综合小说图片| 亚洲欧美一区二区在线观看| 国产亚洲人成网站| 久久久综合网站| 日韩欧美视频在线| 欧美一区二区三区日韩视频| 欧美视频三区在线播放| 欧美日韩午夜精品| 欧日韩精品视频| 欧美视频自拍偷拍| 日本道色综合久久| 欧美性三三影院| 欧美性欧美巨大黑白大战| 成人激情av网| 99免费精品视频| 99精品视频一区二区三区| 91年精品国产| 在线中文字幕一区二区| 色婷婷精品久久二区二区蜜臂av| 99久久精品国产一区二区三区 | 色婷婷激情综合| 色8久久人人97超碰香蕉987| 日本电影亚洲天堂一区| 日本乱码高清不卡字幕| 91色.com| 欧美视频在线不卡| 91免费在线看| 欧美日韩国产系列| 在线播放91灌醉迷j高跟美女| 欧美三级在线视频| 欧美性色综合网| 欧美二区三区91| 精品久久五月天| 中文字幕一区二区在线观看| 亚洲精品网站在线观看| 天天av天天翘天天综合网| 久久成人av少妇免费| 成人精品免费网站| 欧美综合天天夜夜久久| 51精品视频一区二区三区| 久久婷婷国产综合国色天香 | 日韩精品免费视频人成| 国内不卡的二区三区中文字幕 | 天天亚洲美女在线视频| 精品一区二区三区av| 99久久国产综合精品麻豆| 欧美一区二区三区精品| 中文字幕+乱码+中文字幕一区| 亚洲综合图片区| 国产一区视频导航| 色先锋aa成人| 国产欧美精品一区二区三区四区 | 亚洲欧美另类久久久精品2019| 亚洲va国产va欧美va观看|