1. 程式人生 > >mysql中內連線和外連線on後的條件何時生效說明

mysql中內連線和外連線on後的條件何時生效說明

工作中,由於看到錯誤使用的外連線後on的條件,所以寫此文章進行總結.

1.首先建立使用者表t_user,手機號表t_phone.

#建立使用者表
CREATE TABLE t_user(
user_id VARCHAR(36) PRIMARY KEY COMMENT'主鍵id',
user_name VARCHAR(255) COMMENT '使用者姓名',
d TINYINT(2) DEFAULT 0 COMMENT '刪除標識:0-表示未刪除,1-表示刪除'
) ENGINE=INNODB DEFAULT CHARSET=utf8;


#建立手機號表
CREATE TABLE t_phone(
id VARCHAR(36) PRIMARY KEY COMMENT'主鍵id',
phone_number VARCHAR(11) COMMENT'手機號',
user_id VARCHAR(36) COMMENT '使用者id',
d TINYINT(2) DEFAULT 0 COMMENT '刪除標識:0-表示未刪除,1-表示刪除'
) ENGINE=INNODB DEFAULT CHARSET=utf8;

2.給表中插入資料.

#使用者表插入資料
INSERT INTO t_user(user_id,user_name,d)VALUES(UUID(),'張三',0);#1ae72fe7-b6e8-11e7-b728-222222222222
INSERT INTO t_user(user_id,user_name,d)VALUES(UUID(),'李四',1);#1af5ec06-b6e8-11e7-b728-222222222222
INSERT INTO t_user(user_id,user_name,d)VALUES(UUID(),'王五',0);#1b045552-b6e8-11e7-b728-222222222222

#手機號表插入資料
INSERT INTO t_phone(id,phone_number,user_id,d)VALUES(UUID(),'13678547895','1ae72fe7-b6e8-11e7-b728-222222222222',0);
INSERT INTO t_phone(id,phone_number,user_id,d)VALUES(UUID(),'12278547895','1ae72fe7-b6e8-11e7-b728-222222222222',1);

3.寫連線查詢sql進行驗證.

#使用者表做外連線手機號表
SELECT
*
FROM t_user tu
LEFT JOIN t_phone tp ON tp.user_id=tu.user_id AND tu.d=0;#通過結果可知主表t_user的d=0條件沒有生效


SELECT
*
FROM t_user tu
LEFT JOIN t_phone tp ON tp.user_id=tu.user_id AND tp.d=0;#通過結果可知副表t_phone的d=0條件生效

4.結論:對於外連線而言,on後的只是屬於主表的條件不會生效,要想生效,需要放置到where 條件後;對於inner join由於不存在主副表的概念,on後的條件都會生效(inner join請用本例的表自行進行驗證).

相關推薦

mysql連線連線on條件何時生效說明

工作中,由於看到錯誤使用的外連線後on的條件,所以寫此文章進行總結. 1.首先建立使用者表t_user,手機號表t_phone. #建立使用者表 CREATE TABLE t_user( user_id VARCHAR(36) PRIMARY KEY COMMENT'主鍵i

mysqlmysql連線連線小例子

解釋名詞: 1、內連線(自然連線): 只有兩個表相匹配的行才能在結果集中出現 2、外連線: 包括 (1)左外連線(左邊的表不加限制) (2)右外連線(右邊的表不加限制) (3)全外連線(左右兩表都不加限制) 3、建立student、score表如下        

Mysql學習筆記2-連線連線

本節以學生和課程表為例子,來實際操作一下內連線和外連線,本節參考Anthony_tester的部落格,感謝分享。 內連線 內連線(自然連線): 只有兩個表相匹配的行才能在結果集中出現 - 首先建立學生表和課程表 內連線inner join查詢

MySQL連線查詢 連線連線的區別

MySQL 連線查詢 @ sunRainAmazing 1.使用連線查詢的場景 將多張表進行記錄的連線查詢(按照某個欄位指定的條件進行資料的拼接); 進行資料的拼接(兩張表的

mysql資料庫——連線連線

SQL語句的查詢順序:select選項,欄位別名,資料來源(單表,多表和子查詢[別名]),where 子句(條件判斷:從磁碟上開始),group by子句(分組統計,統計函式,分組排序,多欄位分組),having子句(判斷結果,針對分組統計結果),order by子句(排序,

postgreSQL連線連線

測試資料: city表: create table city(id int,name text); insert into city values(0,'北京'),(1,'西安'),(2,'天津'),(3,'上海'),(4,'哈爾濱'),(5,'西藏')

資料庫查詢語句連線連線

內連線:指連線結果僅包含符合連線條件的行,參與連線的兩個表都應該符合連線條件。 外連線:連線結果不僅包含符合連線條件的行同時也包含自身不符合條件的行。   外連線包括:左外連線、右外連線和全外連線。     左外連線:左邊表資料行全部保留,右邊表保留符合連線條件的行。     右外連線:右邊表資料行全部保留,

SQL 連線連線區別

資料庫的資料: 資料分級: 100 定義的是鎖,110 定義的是門鎖,111定義的是門鎖的種類例如光交門鎖。 那麼 門鎖的種類就是110~190  9 種,具體細分,鎖的種類就是總共:9*9=81種。夠用了。 這種型別的表,適合做自連線。 左外連結:連線2次。左側的資

連線 右連結的區別,連線連線的卻別!!

假設有A,B兩個表。   表A記錄如下:   aID     aNum   1     a20050111   2     a20050112   3     a20050113   4     a20050114   5     a20050115   表B記錄如下:  

連線 右連結的區別,連線連線的區別

假設有A,B兩個表。  表A記錄如下:  aID     aNum  1     a20050111  2     a20050112  3     a20050113  4     a20050114  5     a20050115  表B記錄如下:  bID     b

資料庫的連線連線的區別

內連線:指連線結果僅包含符合連線條件的行,參與連線的兩個表都應該符合連線條件。外連線:連線結果不僅包含符合連線條件的行同時也包含自身不符合條件的行。包括左外連線、右外連線和全外連線。左外連線:左邊表資料行全部保留,右邊表保留符合連線條件的行。右外連線:右邊表資料行全部保留,左

連線連線的區別

drop table employees; drop table departments; --建立資料表 --父表 create table departments(        department_id int(10),        department_name varchar(15) ); --

mysql連線連線,等值連線,非等值連線,自然連線的區別聯絡

內連線,外連線實際上都是在笛卡爾積(join)的基礎上對記錄進行篩選。 等值連線和非等值連線:這兩者同時包含在內連線和外連線中,因為內連線和外連線都是需要連線條件的,條件為=則為等值連線,反之為非等值連線。 自然連線:等值連線的一種,使用natural join後面可以不

mySql連線,左連線連線,

1.使用連線查詢的場景 將多張表進行記錄的連線查詢(按照某個欄位指定的條件進行資料的拼接); 進行資料的拼接(兩張表的內容顯示在一個結果表中 使用連線查詢) 最終的結果是:記錄數有可能變化,欄位數一定會增加(至少兩張表的合併) 意義:在使用者檢視資料的時候,顯示的資料

mysql 資料庫查詢語句 左連線連線 連線區別

 左外連結查詢:A  left join  B  on  conidtion  where condition       用A表 的全部資料去匹配 B表 B表無匹配資料時用null代替                       左聯左不丟資料  右外連線查詢:A  ri

Mysql的關聯查詢(連線連線,自連線)

在使用資料庫查詢語句時,單表的查詢有時候不能滿足專案的業務需求,在專案開發過程中,有很多需求都是要涉及到多表的連線查詢,總結一下mysql中的多表關聯查詢 一,內連線查詢 是指所有查詢出的結果都是能夠在連線的表中有對應記錄的。 以t_employee(員工表)和t_dept

mysql連結與連線

1.內連線(或等值連線)       作用:獲取兩個表中欄位匹配關係的記錄。相當於求兩個集合的交集,即共有的部分 注意:MySQL的INNER JOIN(也可以省略 INNER 使用 JOIN,效果一樣) 格式: select 欄

mysql連線連線

簡介 多表查詢會涉及到連線表,分為內連線,外連線(又細分為左連線、右連線)。 內連線 語法:select * from table_a inner join table_b on table_a.id = table_b.id 說明:檢索結果是返回

mysql 連線連線

  1.內連線(或等值連線)       作用:獲取兩個表中欄位匹配關係的記錄。相當於求兩個集合的交集,即共有的部分 注意:MySQL的INNER JOIN(也可以省略 INNER 使用 JOIN,效果一樣) 格式:select 欄位

Day055--MySQL--外來鍵的變種,表與表的關係,單表查詢,多表查詢, 連線,左右連線,全連線

表和表的關係 ---- 外來鍵的變種 * 一對多或多對一 多對多 一對一 如何找出兩張表之間的關係 分析步驟: #1、先站在左表的角度去找 是否左表的多條記錄可以對應右表的一條記錄,如果是,則證明左表的一個欄位foreign key 右表一個欄位(通常是id) #2、再站在右表的角度去找 是否右表