好湿?好紧?好多水好爽自慰,久久久噜久噜久久综合,成人做爰A片免费看黄冈,机机对机机30分钟无遮挡

主頁 > 知識庫 > mysql中各種常見join連表查詢實例總結

mysql中各種常見join連表查詢實例總結

熱門標簽:上海市三維地圖標注 鄭州網絡外呼系統價錢 博樂電銷機器人 機器人打電銷電話 電話機器人是電腦呼號嗎 400電話到哪辦理優惠 云南大數據外呼系統 怎么更改高德地圖標注 南寧外呼系統招商

本文實例講述了mysql中各種常見join連表查詢。分享給大家供大家參考,具體如下:

通常我們需要連接多個表查詢數據,以獲取想要的結果。

一、連接可以分為三類:

  (1) 內連接:join,inner join

  (2) 外連接:left join,left outer join,right join,right outer join,union,union all

  (3) 交叉連接:cross join

 

二、準備需要演示的表:

CREATE TABLE `a` (
 `id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT 'ID',
 `a_name` varchar(32) DEFAULT '' COMMENT 'a表名稱',
 PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

CREATE TABLE `b` (
 `id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT 'ID',
 `a_id` int(11) DEFAULT '0' COMMENT 'a表ID',
 `b_name` varchar(32) DEFAULT '' COMMENT 'b表名稱',
 PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

a表與b表的數據如圖中所示:

三、內連接inner join或join

select * from a inner join b on a.id = b.a_id;
select * from a join b on a.id = b.a_id;
select * from a, b where a.id = b.a_id;

結果如下:

內連接可以理解為,兩個表中同時滿足某條件的數據記錄組合。也就是表A和表B中滿足條件a.id = b.a_id的所有記錄。

當表A中的一條記錄對應表B中的多條記錄時,會以重復的方式對應多條表B記錄出現在結果集中。

當表B中的一條記錄對應表A中的多條記錄時,會以重復的方式對應多條表A記錄出現在結果集中。

四、外連接left join或right join

  (1) 左外連接

select * from a left join b on a.id = b.a_id;
select * from a left outer join b on a.id = b.a_id;

左外連接,會以左邊的表A為主表,返回所有行,即使右表B中沒有匹配的行。

如果左邊的表A在右表B中找不到一條記錄,則返回表A所有記錄并且表B相應的字段設為null。

如果左邊的表A在右表B中找到多條記錄,則以相同表A記錄和不同表B記錄多條顯示在結果集中。

這種情況下,其實是把表A中所有記錄都查詢出來了,包括不滿足條件的記錄。

如果我們只想查出表A中滿足條件的,或是不滿足條件的,該怎么查?

select * from a left join b on a.id = b.a_id where b.a_id is not null;
select * from a left outer join b on a.id = b.a_id where b.a_id is not null;

上面的語句查詢的,就是表A中滿足條件的。

select * from a left join b on a.id = b.a_id where b.a_id is null;
select * from a left outer join b on a.id = b.a_id where b.a_id is null;

上面的語句查詢的,就是表A中不滿足條件的。

  (2) 右外連接

select * from a right join b on a.id = b.a_id;
select * from a right outer join b on a.id = b.a_id;

右外連接其實跟左外連接一樣,區別在于 主表的確定,兩者之間可以相互轉換。

右外連接的描述基本與左外連接相同,這里就不過多描述了。

  (3) 全連接full join

mysql并不支持全連接,不過有相應的替代方案,就是left join union right join 來代替。

select * from a left join b on a.id = b.a_id
union
select * from a right join b on a.id = b.a_id;

全連接會從表A和表B中返回所有的行,如果表A中的行在表B中沒有匹配,或是表B中的行在表A中沒有匹配,這些行都會顯示,不存在的字段以null補充。

union會把其中重復的行合并。

這種情況下,是把表A和表B中滿足條件和不滿足條件的記錄都顯示出來了。

如果只想顯示所有不滿足條件的記錄,則通過如下語句:

select * from a left join b on a.id = b.a_id where b.a_id is null
union
select * from a right join b on a.id = b.a_id where a.id is null;

如果只想顯示所有滿足條件的記錄,則通過如下語句:

select * from a left join b on a.id = b.a_id where b.a_id is not null
union
select * from a right join b on a.id = b.a_id where a.id is not null;

 五、交叉連接

交叉連接實際上就是表A與表B的笛卡爾乘積。

select * from a cross join b;
select * from a, b;

更多關于MySQL相關內容感興趣的讀者可查看本站專題:《MySQL查詢技巧大全》、《MySQL常用函數大匯總》、《MySQL日志操作技巧大全》、《MySQL事務操作技巧匯總》、《MySQL存儲過程技巧大全》及《MySQL數據庫鎖相關技巧匯總》

希望本文所述對大家MySQL數據庫計有所幫助。

您可能感興趣的文章:
  • MYSQL使用inner join 進行 查詢/刪除/修改示例
  • MySQL查詢優化:連接查詢排序limit(join、order by、limit語句)介紹
  • MySQL優化之使用連接(join)代替子查詢
  • mysql多個left join連接查詢用法分析
  • mysql使用from與join兩表查詢的區別總結
  • MySQL中(JOIN/ORDER BY)語句的查詢過程及優化方法
  • MySQL利用profile分析慢sql詳解(group left join效率高于子查詢)
  • Mysql連接join查詢原理知識點
  • MySQL聯表查詢基本操作之left-join常見的坑
  • mysql高效查詢left join和group by(加索引)

標簽:秦皇島 寧夏 白銀 定西 益陽 澳門 杭州 恩施

巨人網絡通訊聲明:本文標題《mysql中各種常見join連表查詢實例總結》,本文關鍵詞  mysql,中,各種,常見,join,連表,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《mysql中各種常見join連表查詢實例總結》相關的同類信息!
  • 本頁收集關于mysql中各種常見join連表查詢實例總結的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 节操何在h| 扶着黄蓉的翘臀挺进去| 51cg吃瓜黑料| 成人三级毛片| 华门儿媳泰剧在线观看全集免费泰剧| 亚洲 欧美 动漫 中文字幕| 色婷婷一区二区三区四区成人网| 篮球队的公共玩具坐便器| 被三个男人下药玩好爽| 揉我奶头?啊?嗯高潮gif| 全是肉的高H短篇bl| 把手伸到裤裆慢慢揉搓的视频| 轻轻色在线观看| 浴室吃奶2韩国在线观看| 三级aa久久| 九九99国产精品视频| 特黄特色老太婆bbw| 絕讚海外貴婦人妻婊水川蓳| 久久咪咪| 久久精品国产亚洲AV久五月天| 午夜免费大片| 欧美大尺度床戏做爰| 少妇扒开双腿自慰出白浆| g男人脚gayfeet脚踩| 性爱故事| 操嫂子逼| 91久久娇小无码???| 成人动漫在线观看免费| 国产主播福利精品一区二区| 国产younv真实| 欧美人与善交大片免费看| 精品一区二区超碰久久久| 男人j进女的屁股视频网站| 男人激烈吮乳吃奶动态图gif| 渔夫荒淫牲艳史bd在线| 欧美另类Z0Z??X在WWE| 国产精品99久久久精品| 日批网站视频| 硬了~宝贝~高H| 久久久久久久国产精品斗地主| 国产精品玖玖玖影院|