91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

mysql中left join設置條件在on與where時的用法區別分析

發布時間:2020-08-31 12:33:31 來源:腳本之家 閱讀:149 作者:懷素真 欄目:MySQL數據庫

本文實例講述了mysql中left join設置條件在on與where時的用法區別。分享給大家供大家參考,具體如下:

一、首先我們準備兩張表來進行測試。

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

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

兩個表的數據如圖所示:

mysql中left join設置條件在on與where時的用法區別分析

運行下面左連接查詢:

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

mysql中left join設置條件在on與where時的用法區別分析

我們分別在on和where后面加上條件,看看執行結果是否相同。

select * from a left join b on a.id = b.a_id and b.id > 3;

mysql中left join設置條件在on與where時的用法區別分析

select * from a left join b on a.id = b.a_id where b.id > 3;

mysql中left join設置條件在on與where時的用法區別分析

上面的兩條語句,條件我們設置的是一樣的都是b.id > 3,為什么顯示結果不同。

sql語句查詢的關鍵字順序一般為 from > where > group by > having > order by

left join 在 from范圍,on 條件會先對 left join 的右表進行篩選,篩選完后的結果 where 再進行篩選。

多個 left join 會生成一張臨時表,on 條件是對 left join 右表進行條件過濾,where 條件針對最后生成的臨時表進行過濾。

所以:

b.id > 3 的條件如果寫在 on 后面,則是先對右邊表(關聯表)進行篩選,得出符合條件的行,然后主表 left join ,返回主表所有的行,右邊表沒匹配上的用 null 表示。

b.id > 3 的條件如果寫在 where 后面,則是先主表 left join 右邊表(關聯表),返回所有的行,然后 where 條件再對結果進行篩選。

注意:on 后面的條件是針對右邊的表(關聯表),對主表沒什么作用。

select * from a left join b on a.id = b.a_id and a.id > 3;

mysql中left join設置條件在on與where時的用法區別分析

我們在on 后面添加了對主表的條件 a.id > 3,不過主表的數據仍然全部顯示出來了,但是影響了右邊表(關聯表)的顯示。

如果想要對主表進行篩選,應該把條件寫在where后。

select * from a left join b on a.id = b.a_id where a.id > 3;

mysql中left join設置條件在on與where時的用法區別分析

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

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

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

额尔古纳市| 景泰县| 达日县| 措勤县| 应用必备| 吉林省| 桓台县| 务川| 红安县| 岳西县| 高雄市| 铁岭市| 花莲县| 瓦房店市| 桓仁| 平泉县| 门源| 石台县| 广宁县| 拉萨市| 本溪| 沙湾县| 和硕县| 古交市| 阿尔山市| 原平市| 汽车| 泾源县| 简阳市| 扶绥县| 鹤庆县| 康定县| 聂拉木县| 上蔡县| 扎兰屯市| 滦平县| 江川县| 惠州市| 民勤县| 汽车| 信宜市|