婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > mysql中left join設置條件在on與where時的用法區別分析

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

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

本文實例講述了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;

兩個表的數據如圖所示:

運行下面左連接查詢:

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

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

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

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

上面的兩條語句,條件我們設置的是一樣的都是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;

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

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

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

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

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

您可能感興趣的文章:
  • MySQL查詢條件中放置on和where的區別分析
  • MySQL left join操作中on和where放置條件的區別介紹
  • Mysql中where與on的區別及何時使用詳析

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

巨人網絡通訊聲明:本文標題《mysql中left join設置條件在on與where時的用法區別分析》,本文關鍵詞  mysql,中,left,join,設置,條件,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《mysql中left join設置條件在on與where時的用法區別分析》相關的同類信息!
  • 本頁收集關于mysql中left join設置條件在on與where時的用法區別分析的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 兴仁县| 搜索| 米易县| 柘城县| 松滋市| 吉木乃县| 灵丘县| 吉木萨尔县| 荔浦县| 喀喇| 扎兰屯市| 栾川县| 玉溪市| 迁西县| 从化市| 正蓝旗| 武山县| 荣成市| 汉阴县| 开封县| 元氏县| 青岛市| 台北市| 霍州市| 滕州市| 修武县| 凌云县| 阿拉善左旗| 南江县| 大石桥市| 喀什市| 桃源县| 新干县| 南通市| 新乡市| 岳普湖县| 运城市| 陈巴尔虎旗| 利辛县| 微山县| 都安|